stork issueshttps://gitlab.isc.org/isc-projects/stork/-/issues2022-06-28T17:17:36Zhttps://gitlab.isc.org/isc-projects/stork/-/issues/182Swagger/java should be developer dependency2022-06-28T17:17:36ZTomek MrugalskiSwagger/java should be developer dependencyWe previously discussed whether requiring Java for every build (to run goswagger) is a problem or not. We now have several good arguments for it being a real problem:
- swagger fails on docker on Ubuntu 20.04 (see #304) The proposed wor...We previously discussed whether requiring Java for every build (to run goswagger) is a problem or not. We now have several good arguments for it being a real problem:
- swagger fails on docker on Ubuntu 20.04 (see #304) The proposed workaround (to upgrade to newer kernel) is unacceptable (newer packages are not available for 20.04 which is the latest Ubuntu release, nobody will compile kernel just to build Stork)
- some users dislike Java: https://github.com/isc-projects/kea-anterius/issues/33#issuecomment-594473167
- installing Java and swagger for every build slows down the build process
- making swagger to run on FreeBSD is complicated (see #193)
The Stork build has to be updated, so it should be possible to build it without having Java installed.
One possible way to achieve that is to commit the generated API files and require java/run goswagger only when the API is being changed. So it would become a development dependency. This is how we treat bison in Kea. It's only required for developers when parser change is being done. Similarly, here swagger would only be needed when API change was introduced.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/407automate combining ChangeLog into release notes2021-03-02T18:22:51ZMichal Nowikowskiautomate combining ChangeLog into release notesoutstandinghttps://gitlab.isc.org/isc-projects/stork/-/issues/450Stork build process from release sources with minimal build dependencies2022-06-28T17:18:14ZCarsten StrotmannStork build process from release sources with minimal build dependenciesIt would be nice to be able to build the Stork agent/server binaries from the release sources with just
go build ...
instead of the rake process and all it's dependencies. The generated API source files could be part of the release sou...It would be nice to be able to build the Stork agent/server binaries from the release sources with just
go build ...
instead of the rake process and all it's dependencies. The generated API source files could be part of the release sources, as they should be stable for a release.outstandinghttps://gitlab.isc.org/isc-projects/stork/-/issues/456migrate from swagger to openapi tools and switch to version 3.02023-03-30T15:50:19ZMichal Nowikowskimigrate from swagger to openapi tools and switch to version 3.0There are two tasks:
- [ ] migrate away from swagger to openapi
- [ ] migrate to OpenAPI spec 3.0 (the current latest is 3.0.3)There are two tasks:
- [ ] migrate away from swagger to openapi
- [ ] migrate to OpenAPI spec 3.0 (the current latest is 3.0.3)backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/513Publish Stork API docs2022-11-16T11:54:50ZTomek MrugalskiPublish Stork API docsWe do have Stork API documentation available in the Stork itself. However, during discussions with a potential contractor, a topic of the API doc availability came up. We should publish the docs somewhere, so the docs are easily accessible.We do have Stork API documentation available in the Stork itself. However, during discussions with a potential contractor, a topic of the API doc availability came up. We should publish the docs somewhere, so the docs are easily accessible.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/549rake uninstall2022-02-04T08:26:20ZTomek Mrugalskirake uninstallWe do have installation procedure (`rake install`), but there is no uninstall. As reported [here](https://gitlab.isc.org/isc-projects/stork/-/issues/540#note_212156).We do have installation procedure (`rake install`), but there is no uninstall. As reported [here](https://gitlab.isc.org/isc-projects/stork/-/issues/540#note_212156).outstandinghttps://gitlab.isc.org/isc-projects/stork/-/issues/556Attempt to reduce Stork dependencies2023-12-11T10:00:07ZTomek MrugalskiAttempt to reduce Stork dependenciesThe recent security audit shows that we have lots of dependencies and that means more exposure to third party vulnerabilities and potential necessity to do frequent Stork security updates. That is something we clearly want to avoid.
@on...The recent security audit shows that we have lots of dependencies and that means more exposure to third party vulnerabilities and potential necessity to do frequent Stork security updates. That is something we clearly want to avoid.
@ondrej mentioned two tools that may possibly be helpful:
- https://dependencytrack.org/
- https://github.com/oss-review-toolkit/ort
I'm sure there are others. We should look at them and see if there's anything we don't need in our dependencies. This tickets covers just doing the analysis and assess how much effort would it be to do the dependency removal, if it is even feasible. The actual removal is out of scope.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/587IPv6 support in Stork system test framework2023-07-27T12:26:19ZSlawek FigielIPv6 support in Stork system test frameworkThe system tests framework incorrectly handles IPv6 addresses. It causes a system test building to fail on some configurations.
We need to rewrite our scripts to support this IP schema.
We noticed also that some system tests were execut...The system tests framework incorrectly handles IPv6 addresses. It causes a system test building to fail on some configurations.
We need to rewrite our scripts to support this IP schema.
We noticed also that some system tests were executed, but produce incorrect results when IPv6 was used. We need to prepare some unit and system tests to cover IPv6-based configurations.
```
distro_agent = 'ubuntu/18.04', distro_server = 'centos/8'
@pytest.mark.parametrize("distro_agent, distro_server", SUPPORTED_DISTROS)
def test_pkg_upgrade_server_token(distro_agent, distro_server):
"""Check if Stork agent and server can be upgraded from latest release
to localy built packages."""
server = containers.StorkServerContainer(alias=distro_server)
agent = containers.StorkAgentContainer(alias=distro_agent)
# install the latest version of stork from cloudsmith
server.setup_bg('cloudsmith')
while server.mgmt_ip is None:
time.sleep(0.1)
agent.setup_bg('cloudsmith', server.mgmt_ip)
server.setup_wait()
agent.setup_wait()
# login
r = server.api_post('/sessions', json=dict(useremail='admin', userpassword='admin'), expected_status=200) # TODO: POST should return 201
assert r.json()['login'] == 'admin'
# install local packages
banner('UPGRADING STORK SERVER')
server.prepare_stork_server()
# get server token from server
for i in range(100):
try:
r = server.api_get('/machines-server-token')
break
except:
if i == 99:
raise
time.sleep(1)
data = r.json()
server_token = data['token']
# install kea on the agent machine
agent.install_kea()
# install local packages using server token based way
banner('UPGRADING STORK AGENT')
server_url = 'http://%s:8080' % server.mgmt_ip
> agent.run('curl -o stork-install-agent.sh %s/stork-install-agent.sh' % server_url)
agent = <containers.StorkAgentContainer object at 0x7fdd88d29970>
data = {'token': 'o85LV4YpOCqapgfaiZ4feeoUJL4fiw8v'}
distro_agent = 'ubuntu/18.04'
distro_server = 'centos/8'
i = 0
r = <Response [200]>
server = <containers.StorkServerContainer object at 0x7fdd88bfa040>
server_token = 'o85LV4YpOCqapgfaiZ4feeoUJL4fiw8v'
server_url = 'http://fd42:6657:6f41:ab43:216:3eff:fe59:2fea:8080'
tests.py:211:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
self = <containers.StorkAgentContainer object at 0x7fdd88d29970>, cmd = 'curl -o stork-install-agent.sh http://fd42:6657:6f41:ab43:216:3eff:fe59:2fea:8080/stork-install-agent.sh'
env = {'LANG': 'en_US.UTF-8', 'LANGUAGE': 'en_US:UTF-8', 'LC_ALL': 'en_US.UTF-8'}, ignore_error = False, attempts = 1, sleep_time_after_attempt = None
def run(self, cmd, env=None, ignore_error=False, attempts=1, sleep_time_after_attempt=None):
cmd2 = shlex.split(cmd)
if env is None:
env = {}
env['LANG'] = "en_US.UTF-8"
env['LANGUAGE'] = "en_US:UTF-8"
env['LC_ALL'] = "en_US.UTF-8"
for attempt in range(attempts):
result = self.cntr.execute(cmd2, env)
out = 'run: %s\n' % cmd
out += result[1]
self._trace_logs(out, 'out')
self._trace_logs(result[2], 'err')
if result[0] == 0:
break
elif attempt < attempts - 1:
print('command failed, retry, attempt %d/%d' % (attempt, attempts))
if sleep_time_after_attempt:
time.sleep(sleep_time_after_attempt)
if result[0] != 0 and not ignore_error:
> raise Exception('problem with cmd: %s' % cmd)
E Exception: problem with cmd: curl -o stork-install-agent.sh http://fd42:6657:6f41:ab43:216:3eff:fe59:2fea:8080/stork-install-agent.sh
attempt = 0
attempts = 1
cmd = 'curl -o stork-install-agent.sh http://fd42:6657:6f41:ab43:216:3eff:fe59:2fea:8080/stork-install-agent.sh'
cmd2 = ['curl', '-o', 'stork-install-agent.sh', 'http://fd42:6657:6f41:ab43:216:3eff:fe59:2fea:8080/stork-install-agent.sh']
env = {'LANG': 'en_US.UTF-8', 'LANGUAGE': 'en_US:UTF-8', 'LC_ALL': 'en_US.UTF-8'}
ignore_error = False
out = 'run: curl -o stork-install-agent.sh http://fd42:6657:6f41:ab43:216:3eff:fe59:2fea:8080/stork-install-agent.sh\n'
result = InstanceExecuteResult(exit_code=3, stdout='', stderr="curl: (3) Port number ended with ':'\n")
self = <containers.StorkAgentContainer object at 0x7fdd88d29970>
sleep_time_after_attempt = None
containers.py:228: Exception
```outstandinghttps://gitlab.isc.org/isc-projects/stork/-/issues/789Fix strict template typing errors2022-07-05T13:53:28ZSlawek FigielFix strict template typing errorsI enabled the strict template typing option in the TypeScript configuration file (`tsconfig.json`), and I got a long list of minor issues. They shouldn't be dangerous as JavaScript has some flexibility in type interpretation. But fixing ...I enabled the strict template typing option in the TypeScript configuration file (`tsconfig.json`), and I got a long list of minor issues. They shouldn't be dangerous as JavaScript has some flexibility in type interpretation. But fixing them will allow us to enable more advanced features of the TypeScript compiler and get more help from IDE, for example, the IntelliSense feature and type checking in template files. Eliminating these bugs also prevents them from growing and becoming significant issues.
My configuration `tsconfig.json`:
```json
{
...
"angularCompilerOptions": {
...
"strictTemplates": true
}
}
```
Issue list:
```
Error: src/app/config-review-panel/config-review-panel.component.html:50:13 - error TS2322: Type 'string' is not assignable to type 'number'.
50 pageLinkSize="3"
~~~~~~~~~~~~
src/app/config-review-panel/config-review-panel.component.ts:30:18
30 templateUrl: './config-review-panel.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component ConfigReviewPanelComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:20:25 - error TS2322: Type 'string' is not assignable to type 'number'.
20 min="1"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:21:25 - error TS2322: Type 'string' is not assignable to type 'number'.
21 max="{{ v6 ? 65535 : 255 }}"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:36:25 - error TS2322: Type 'string' is not assignable to type 'number'.
36 min="1"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:37:25 - error TS2322: Type 'string' is not assignable to type 'number'.
37 max="{{ v6 ? 65535 : 255 }}"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:88:43 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
88 <div [ngSwitch]="fieldControl.data.fieldType" class="p-d-flex p-ai-center p-mt-5 p-ml-3">
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:92:49 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
92 id="{{ fieldControl.data.getInputId() }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:96:29 - error TS2322: Type 'string' is not assignable to type 'boolean'.
96 autoResize="true"
~~~~~~~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:100:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
100 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:100:91 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
100 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:106:49 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
106 id="{{ fieldControl.data.getInputId() }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:111:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
111 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:111:91 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
111 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:115:46 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
115 <div id="{{ fieldControl.data.getInputId() }}" class="p-inputtext option-field p-p-0">
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:131:54 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
131 inputId="{{ fieldControl.data.getInputId() }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:132:29 - error TS2322: Type 'string' is not assignable to type 'number'.
132 min="0"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:133:29 - error TS2322: Type 'string' is not assignable to type 'number'.
133 max="255"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:138:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
138 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:138:91 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
138 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:145:54 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
145 inputId="{{ fieldControl.data.getInputId() }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:146:29 - error TS2322: Type 'string' is not assignable to type 'number'.
146 min="0"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:147:29 - error TS2322: Type 'string' is not assignable to type 'number'.
147 max="65535"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:152:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
152 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:152:91 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
152 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:159:54 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
159 inputId="{{ fieldControl.data.getInputId() }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:160:29 - error TS2322: Type 'string' is not assignable to type 'number'.
160 min="0"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:161:29 - error TS2322: Type 'string' is not assignable to type 'number'.
161 max="4294967295"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
0m ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:166:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
166 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:166:91 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
166 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:172:49 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
172 id="{{ fieldControl.data.getInputId() }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:177:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
177 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:177:91 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
177 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:183:49 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
7m183 id="{{ fieldControl.data.getInputId() }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:188:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
188 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:188:91 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
188 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:194:49 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
194 id="{{ fieldControl.data.getInputId(0) }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:200:54 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
200 inputId="{{ fieldControl.data.getInputId(1) }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:202:29 - error TS2322: Type 'string' is not assignable to type 'number'.
202 min="1"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:203:29 - error TS2322: Type 'string' is not assignable to type 'number'.
203 max="128"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:208:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
208 <label for="{{ fieldControl.data.getInputId(0) }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:208:92 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
208 <label for="{{ fieldControl.data.getInputId(0) }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:214:54 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
214 inputId="{{ fieldControl.data.getInputId(0) }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:216:29 - error TS2322: Type 'string' is not assignable to type 'number'.
216 min="0"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:217:29 - error TS2322: Type 'string' is not assignable to type 'number'.
217 max="65535"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:222:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
222 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:222:91 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
222 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:224:54 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
224 inputId="{{ fieldControl.data.getInputId(1) }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:226:29 - error TS2322: Type 'string' is not assignable to type 'number'.
226 min="0"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:227:29 - error TS2322: Type 'string' is not assignable to type 'number'.
227 max="16"
~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:238:53 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
238 id="{{ fieldControl.data.getInputId() }}"
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:243:57 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
243 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:243:95 - error TS2339: Property 'data' does not exist on type 'AbstractControl'.
243 <label for="{{ fieldControl.data.getInputId() }}">{{ fieldControl.data.fieldType }}</label>
~~~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-form/dhcp-option-form.component.html:279:17 - error TS2322: Type 'string' is not assignable to type 'boolean'.
279 v6="false"
~~
src/app/dhcp-option-form/dhcp-option-form.component.ts:38:18
38 templateUrl: './dhcp-option-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionFormComponent.
Error: src/app/dhcp-option-set-form/dhcp-option-set-form.component.html:7:10 - error TS2322: Type 'AbstractControl' is not assignable to type 'FormGroup'.
7 [formGroup]="formArray.at(i)"
~~~~~~~~~
src/app/dhcp-option-set-form/dhcp-option-set-form.component.ts:13:18
13 templateUrl: './dhcp-option-set-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionSetFormComponent.
Error: src/app/dhcp-option-set-form/dhcp-option-set-form.component.html:7:10 - error TS2322: Type 'AbstractControl' is not assignable to type 'FormGroup'.
7 [formGroup]="formArray.at(i)"
~~~~~~~~~
src/app/dhcp-option-set-form/dhcp-option-set-form.component.ts:13:18
13 templateUrl: './dhcp-option-set-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component DhcpOptionSetFormComponent.
Error: src/app/events-panel/events-panel.component.html:44:9 - error TS2322: Type 'string' is not assignable to type 'number'.
44 pageLinkSize="3"
~~~~~~~~~~~~
src/app/events-panel/events-panel.component.ts:15:18
15 templateUrl: './events-panel.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component EventsPanelComponent.
Error: src/app/events-panel/events-panel.component.html:74:21 - error TS2322: Type 'string' is not assignable to type 'boolean'.
74 showClear="true"
~~~~~~~~~
src/app/events-panel/events-panel.component.ts:15:18
15 templateUrl: './events-panel.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component EventsPanelComponent.
Error: src/app/events-panel/events-panel.component.html:91:21 - error TS2322: Type 'string' is not assignable to type 'boolean'.
91 showClear="true"
~~~~~~~~~
src/app/events-panel/events-panel.component.ts:15:18
15 templateUrl: './events-panel.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component EventsPanelComponent.
Error: src/app/events-panel/events-panel.component.html:108:21 - error TS2322: Type 'string' is not assignable to type 'boolean'.
108 showClear="true"
~~~~~~~~~
src/app/events-panel/events-panel.component.ts:15:18
15 templateUrl: './events-panel.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component EventsPanelComponent.
Error: src/app/events-panel/events-panel.component.html:125:21 - error TS2322: Type 'string' is not assignable to type 'boolean'.
125 showClear="true"
~~~~~~~~~
src/app/events-panel/events-panel.component.ts:15:18
15 templateUrl: './events-panel.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component EventsPanelComponent.
Error: src/app/ha-status/ha-status.component.html:17:17 - error TS2322: Type 'string' is not assignable to type 'boolean'.
17 showServerLink="true"
~~~~~~~~~~~~~~
src/app/ha-status/ha-status.component.ts:12:18
12 templateUrl: './ha-status.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component HaStatusComponent.
Error: src/app/host-form/host-form.component.html:92:32 - error TS2740: Type 'AbstractControl' is missing the following properties from type 'FormGroup': controls, registerControl, addControl, removeControl, and 3 more.
92 <ng-container [formGroup]="ipGroup" class="p-d-flex p-ai-start">
~~~~~~~~~
src/app/host-form/host-form.component.ts:163:18
163 templateUrl: './host-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component HostFormComponent.
Error: src/app/host-form/host-form.component.html:125:65 - error TS2322: Type 'string' is not assignable to type 'number'.
125 <p-inputNumber ngDefaultControl min="1" max="128" formControlName="inputPDLength">
~~~
src/app/host-form/host-form.component.ts:163:18
163 templateUrl: './host-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component HostFormComponent.
Error: src/app/host-form/host-form.component.html:125:73 - error TS2322: Type 'string' is not assignable to type 'number'.
125 <p-inputNumber ngDefaultControl min="1" max="128" formControlName="inputPDLength">
~~~
src/app/host-form/host-form.component.ts:163:18
163 templateUrl: './host-form.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component HostFormComponent.
Error: src/app/json-tree/json-tree.component.html:56:14 - error TS2322: Type 'string | number' is not assignable to type 'string'.
Type 'number' is not assignable to type 'string'.
56 [key]="item.key"
~~~
src/app/json-tree/json-tree.component.ts:30:18
30 templateUrl: './json-tree.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component JsonTreeComponent.
Error: src/app/json-tree/json-tree.component.html:71:13 - error TS2322: Type 'string' is not assignable to type 'boolean'.
71 showCurrentPageReport="true"
~~~~~~~~~~~~~~~~~~~~~
src/app/json-tree/json-tree.component.ts:30:18
30 templateUrl: './json-tree.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component JsonTreeComponent.
Error: src/app/json-tree/json-tree.component.html:131:42 - error TS2362: The left-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
131 (keyup.enter)="onEnterJumpToPage(jumpToPageBox.value - 1); jumpToPageBox.value = ''"
~~~~~~~~~~~~~~~~~~~~~~~
src/app/json-tree/json-tree.component.ts:30:18
30 templateUrl: './json-tree.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component JsonTreeComponent.
Error: src/app/kea-app-tab/kea-app-tab.component.html:7:11 - error NG8007: The property and event halves of the two-way binding 'visible' are not bound to the same target.
Find more at https://angular.io/guide/two-way-binding#how-two-way-binding-works
7 [(visible)]="appRenameDialogVisible"
~~~~~~~
src/app/rename-app-dialog/rename-app-dialog.component.ts:21:14
21 export class RenameAppDialogComponent implements OnInit, OnChanges {
~~~~~~~~~~~~~~~~~~~~~~~~
The property half of the binding is to the 'RenameAppDialogComponent' component.
src/app/kea-app-tab/kea-app-tab.component.ts:1:45
1 import { Component, OnInit, Input, Output, EventEmitter, OnDestroy } from '@angular/core'
~~~~~~~~~~~~~~~~~~~~~
The event half of the binding is to a native event called 'visible' on the <app-rename-app-dialog> DOM element.
Are you missing an output declaration called 'visibleChange'?
src/app/kea-app-tab/kea-app-tab.component.ts:23:18
23 templateUrl: './kea-app-tab.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component KeaAppTabComponent.
Error: src/app/kea-app-tab/kea-app-tab.component.html:298:34 - error TS2739: Type '{ machine: any; appType: any; daemonType: any; }' is missing the following properties from type '{ level: number; machine: any; appType: any; daemonType: any; user: any; }': level, user
298 [filter]="{
~~~~~~
src/app/kea-app-tab/kea-app-tab.component.ts:23:18
23 templateUrl: './kea-app-tab.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component KeaAppTabComponent.
Error: src/app/machines-page/machines-page.component.html:569:45 - error TS2739: Type '{ machine: any; }' is missing the following properties from type '{ level: number; machine: any; appType: any; daemonType: any; user: any; }': level, appType, daemonType, user
569 <app-events-panel #eventsTable [filter]="{ machine: machineTab.machine.id }"></app-events-panel>
~~~~~~
src/app/machines-page/machines-page.component.ts:21:18
21 templateUrl: './machines-page.component.html',
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Error occurs in the template of component MachinesPageComponent.
```backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/885Installation of NPM modules fails when using FreeBSD walkthrough2022-11-08T14:56:24ZSlawek FigielInstallation of NPM modules fails when using FreeBSD walkthroughI downloaded the fresh VM drive image (`FreeBSD-13.1-RELEASE-amd64.vhd.xz`) from the official FreeBSD page and performed all steps from the FreeBSD installation guide from our documentation. It finished successfully.
Next, I tried to bu...I downloaded the fresh VM drive image (`FreeBSD-13.1-RELEASE-amd64.vhd.xz`) from the official FreeBSD page and performed all steps from the FreeBSD installation guide from our documentation. It finished successfully.
Next, I tried to build the server package (`rake build:server_pkg`). Unfortunately, it fails to install frontend dependencies. I got the error:
```
npm ERR! code 127
npm ERR! /root/stork/webui/node_modules/@parcel/watcher
npm ERR! command failed
npm ERR! sh -c -- node-gyp-build
npm ERR! node-gyp-build: --: not found
```
![image](/uploads/f9069323a3dfb2676cc215f40d7965ce/image.png)
I didn't found the solution yet. The `node-gyp-build` exists. Maybe something is wrong with the project directory permissions or the `NodeJS` installation.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/886Tar command does not suit Openbsd: tar zxf instead of tar -zxf2022-12-07T09:04:07ZmikygeeTar command does not suit Openbsd: tar zxf instead of tar -zxfHello,
I started the command
`# rake31 build:server`
And got this error
```
tar -zxf /home/user/stork/tools/golang/goswagger.tar.gz -C /home/user/stork/tools/golang/goswagger-sources --strip-components=1
tar: unknown option -- -
usage: t...Hello,
I started the command
`# rake31 build:server`
And got this error
```
tar -zxf /home/user/stork/tools/golang/goswagger.tar.gz -C /home/user/stork/tools/golang/goswagger-sources --strip-components=1
tar: unknown option -- -
usage: tar {crtux}[014578befHhjLmNOoPpqsvwXZz]
[blocking-factor | archive | replstr] [-C directory] [-I file]
[file ...]
tar {-crtux} [-014578eHhjLmNOoPpqvwXZz] [-b blocking-factor]
[-C directory] [-f archive] [-I file] [-s replstr] [file ...]
rake aborted!
Command failed with status (1): [tar -zxf /home/user/stork/tools/golang/g...]
```
On openbsd the dash is not necessary. Also the --strip-components option doesn't exist.
Could you make a if statement (if openbsd then tar zxf ...) to handle this problem ?
Regardsbackloghttps://gitlab.isc.org/isc-projects/stork/-/issues/895Fix golangci-lint dependency installation on alpine2022-12-06T14:47:22ZDan TheisenFix golangci-lint dependency installation on alpineWhile running `rake prepare:dev` on Alpine Linux, I discovered that the current rake script appears to be fetching a prebuilt golangci-lint tarball. This should be fixed by instead using `go install`While running `rake prepare:dev` on Alpine Linux, I discovered that the current rake script appears to be fetching a prebuilt golangci-lint tarball. This should be fixed by instead using `go install`outstandingDan TheisenDan Theisenhttps://gitlab.isc.org/isc-projects/stork/-/issues/1002Run demo on RHEL92023-03-07T14:32:28ZTomek MrugalskiRun demo on RHEL9@cstrotm reported building demo on RHEL9 was really painful. We should:
- [ ] build the demo on fresh RHEL9
- [ ] update outdated dependencies (outdated docker-compose was mentioned, but there may be others)
- [ ] come up with a proposa...@cstrotm reported building demo on RHEL9 was really painful. We should:
- [ ] build the demo on fresh RHEL9
- [ ] update outdated dependencies (outdated docker-compose was mentioned, but there may be others)
- [ ] come up with a proposal how to run tests on RHEL9 (this may end up in a separate ticket)backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1032Install and Enable TSDoc linter2023-05-09T13:42:32ZMarcin SiodelskiInstall and Enable TSDoc linterOn the in-person 2023 meeting the team have agreed to follow the TSDoc style for documenting the typescript code. Having said that, we need a linter to validate the documentation formatting. To do it:
```
npm install --save-dev eslint-p...On the in-person 2023 meeting the team have agreed to follow the TSDoc style for documenting the typescript code. Having said that, we need a linter to validate the documentation formatting. To do it:
```
npm install --save-dev eslint-plugin-tsdoc
```
Then, update the `.eslintrc.json` with the following contents:
```
"plugins": ["eslint-plugin-tsdoc"],
"rules": {
"tsdoc/syntax": "warn"
},
```
Finally, correct the issues reported by the linter. Most of the errors seem to be related to not using a hyphen after function parameter names (`tsdoc-param-tag-missing-hyphen`).backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1114Replace fpm with nfpm2023-07-04T13:29:57ZSlawek FigielReplace fpm with nfpmI found a Go replacement for the `fpm` program we use to build the packages: [nfpm](https://github.com/goreleaser/nfpm).
We need to check if it can build valid APK packages. If yes, we should discuss using it instead `fpm`.
Additionall...I found a Go replacement for the `fpm` program we use to build the packages: [nfpm](https://github.com/goreleaser/nfpm).
We need to check if it can build valid APK packages. If yes, we should discuss using it instead `fpm`.
Additionally, introducing it will reduce the Ruby-related tools in the project.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1157Process: Investigate and enable Pyre/mypy and Pysa, if useful2023-09-21T10:16:32ZTomek MrugalskiProcess: Investigate and enable Pyre/mypy and Pysa, if usefulAs @manu reported in his [security audit](https://gitlab.isc.org/isc-private/kea/-/wikis/Kea-Security-Review-02-2023#7-github-security-features-pyrepysa-related-to-stork), we might take a look at Pyre or mypy (type checker) and Pysa (sta...As @manu reported in his [security audit](https://gitlab.isc.org/isc-private/kea/-/wikis/Kea-Security-Review-02-2023#7-github-security-features-pyrepysa-related-to-stork), we might take a look at Pyre or mypy (type checker) and Pysa (static analyzer) that could improve our code quality.
- [ ] Pyre/mypy
- [ ] Pysa
If the tools are unsuitable, please document the reasons here and close the ticket.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1161Linter and formatter for Ruby2023-09-22T10:07:43ZSlawek FigielLinter and formatter for RubyOut Rakefiles (written in Ruby) are no longer trivial. We should add the Ruby linter and formatter to force the consistent and proper coding style for these files.Out Rakefiles (written in Ruby) are no longer trivial. We should add the Ruby linter and formatter to force the consistent and proper coding style for these files.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1162Hadolint for Dockerfiles2023-09-19T13:45:30ZSlawek FigielHadolint for DockerfilesI propose adding the Hadolint - Docker linter to our build kit for easier following the best practices and force consistent formatting.I propose adding the Hadolint - Docker linter to our build kit for easier following the best practices and force consistent formatting.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1182Hooks: Enable -trimpath compiler flag2023-10-17T13:27:12ZSlawek FigielHooks: Enable -trimpath compiler flagThe Golang runtime requires the main executable, and plugins have precisely the same dependencies. The dependencies are compared by path embedded in the binaries. By default, Go uses the absolute paths.
It causes the GOPATH directory fo...The Golang runtime requires the main executable, and plugins have precisely the same dependencies. The dependencies are compared by path embedded in the binaries. By default, Go uses the absolute paths.
It causes the GOPATH directory for compiling the hook to point to the same directory for compiling the main executable. It is problematic when we compile the main Stork binary, but external developers compile a hook. They need to configure their environment exactly the same as us.
The solution is to use the `-trimpath` flag for compiling the main binary and plugins. It causes the embedded paths to be relative to the GOPATH directory. It shouldn't be visible to the end-users or have any side effects.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1192Starting fresh demo fails for modern docker compose2024-02-13T14:22:35ZSlawek FigielStarting fresh demo fails for modern docker composeThe issue was found during [1.13 sanity checks](https://gitlab.isc.org/isc-projects/stork/-/issues/1187#note_408649) by @slawek.
`rake demo:up` fails:
```
deep@deep:~/Downloads/artifacts (62)/stork-1.13.0$ rake demo:up CS_REPO_ACCESS_T...The issue was found during [1.13 sanity checks](https://gitlab.isc.org/isc-projects/stork/-/issues/1187#note_408649) by @slawek.
`rake demo:up` fails:
```
deep@deep:~/Downloads/artifacts (62)/stork-1.13.0$ rake demo:up CS_REPO_ACCESS_TOKEN=...
docker compose --project-directory . -f docker/docker-compose.yaml -f docker/docker-compose-premium.yaml build
[+] Building 1.9s (8/8) FINISHED docker-container:stork
=> CANCELED [server internal] booting buildkit 1.9s
=> => pulling image moby/buildkit:buildx-stable-1 1.9s
=> CANCELED [agent-kea internal] booting buildkit 1.9s
=> => pulling image moby/buildkit:buildx-stable-1 1.9s
=> CANCELED [agent-kea6 internal] booting buildkit 1.9s
=> => pulling image moby/buildkit:buildx-stable-1 1.9s
=> CANCELED [agent-kea-ha2 internal] booting buildkit 1.9s
=> => pulling image moby/buildkit:buildx-stable-1 1.9s
=> CANCELED [agent-bind9-2 internal] booting buildkit 1.9s
=> => pulling image moby/buildkit:buildx-stable-1 1.9s
=> CANCELED [kea-config-generator internal] booting buildkit 1.9s
=> => pulling image moby/buildkit:buildx-stable-1 1.7s
=> => creating container buildx_buildkit_stork0 0.2s
=> ERROR [agent-bind9 internal] booting buildkit 1.9s
=> => pulling image moby/buildkit:buildx-stable-1 1.8s
=> => creating container buildx_buildkit_stork0 0.1s
=> CANCELED [agent-kea-ha1 internal] booting buildkit 1.9s
=> => pulling image moby/buildkit:buildx-stable-1 1.9s
------
> [agent-bind9 internal] booting buildkit:
------
Error response from daemon: Conflict. The container name "/buildx_buildkit_stork0" is already in use by container "aad862ed4f9cc3c211de2308c3475379f7f5e2835d646f4a7e5f78186e717d0a". You have to remove (or rename) that container to be able to reuse that name.
rake aborted!
Command failed with status (17): [docker compose --project-directory . -f do...]
/home/deep/Downloads/artifacts (62)/stork-1.13.0/rakelib/60_docker_demo.rake:98:in `docker_up_services'
/home/deep/Downloads/artifacts (62)/stork-1.13.0/rakelib/60_docker_demo.rake:116:in `block (2 levels) in <top (required)>'
/usr/share/rubygems-integration/all/gems/rake-13.0.6/exe/rake:27:in `<top (required)>'
Tasks: TOP => demo:up
(See full trace by running task with --trace)
```
My setup:
```
$ docker version
Client:
Version: 24.0.5
API version: 1.41 (downgraded from 1.43)
Go version: go1.20.3
Git commit: 24.0.5-0ubuntu1~22.04.1
Built: Mon Aug 21 19:50:14 2023
OS/Arch: linux/amd64
Context: default
Server:
Engine:
Version: 20.10.24
API version: 1.41 (minimum version 1.12)
Go version: go1.20.7
Git commit: 5d6db84
Built: Wed Aug 23 20:55:00 2023
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.6.20
GitCommit: 2806fc1057397dbaeefbea0e4e17bddfbd388f38
runc:
Version: 1.1.5
GitCommit:
docker-init:
Version: 0.19.0
GitCommit: de40ad0
```
```
$ docker compose version
Docker Compose version v2.21.0
```
```
$ docker buildx version
github.com/docker/buildx v0.11.2 9872040
```
Workaround: Call `rake demo:build` and next `rake demo:up`
The same problem is described [on StackOverflow](https://stackoverflow.com/questions/76275277/docker-compose-cache-from-cache-to-buildx-the-container-name-buildx-buildk).outstandinghttps://gitlab.isc.org/isc-projects/stork/-/issues/1227Put hook binaries outside /var by default2024-02-02T12:57:44ZSlawek FigielPut hook binaries outside /var by defaultThe problem was reported [on our mailing list](https://lists.isc.org/pipermail/stork-users/2023-November/000231.html).
The default hook directories are `/var/lib/stork-agent/hooks` and `/var/lib/stork-server/hooks`.
But the various Linu...The problem was reported [on our mailing list](https://lists.isc.org/pipermail/stork-users/2023-November/000231.html).
The default hook directories are `/var/lib/stork-agent/hooks` and `/var/lib/stork-server/hooks`.
But the various Linux distros in the `enforcing` mode disallow the libraries from the `/var` directory.
It causes the Stork hooks not to be loaded, producing the message: `failed to map segment from shared object`.1.16https://gitlab.isc.org/isc-projects/stork/-/issues/1234Update the build from sources guide for Ubuntu 20.04 LTS2024-02-06T14:42:33ZSlawek FigielUpdate the build from sources guide for Ubuntu 20.04 LTSSince the Stork build system requires Python 3.10 and Ruby 2.3, [the guide to build Stork from sources](https://gitlab.isc.org/isc-projects/stork/-/wikis/Install) is no longer applicable on Ubuntu 20.04 LTS.
The guide recommends install...Since the Stork build system requires Python 3.10 and Ruby 2.3, [the guide to build Stork from sources](https://gitlab.isc.org/isc-projects/stork/-/wikis/Install) is no longer applicable on Ubuntu 20.04 LTS.
The guide recommends installing Python and Ruby from the package repository, but the available versions of the above dependencies are outdated. Users need to install Python and Ruby from their maintainers' external, official packages. We should mention it in the guide.1.16https://gitlab.isc.org/isc-projects/stork/-/issues/1245Deprecation warning in mockery2023-12-19T14:37:31ZSlawek FigielDeprecation warning in mockeryThe issue was found by @piotrek during [1.14 sanity checks](https://gitlab.isc.org/isc-projects/stork/-/issues/1240#note_421364).
```shell
$ rake unittest:backend
WRN DEPRECATION: use of the packages config will be the only way to gener...The issue was found by @piotrek during [1.14 sanity checks](https://gitlab.isc.org/isc-projects/stork/-/issues/1240#note_421364).
```shell
$ rake unittest:backend
WRN DEPRECATION: use of the packages config will be the only way to generate mocks in v3. Please migrate your config to use the packages feature. dry-run=false migration=https://vektra.github.io/mockery/v2.34/migrating_to_packages/ url=https://vektra.github.io/mockery/v2.34/features/#packages-configuration version=v2.34.0
```backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1249Problem installing danger on operating system with non-US locale2023-12-19T14:42:10ZSlawek FigielProblem installing danger on operating system with non-US localeThe issue was found by @andrei during 1.14 sanity checks: https://gitlab.isc.org/isc-projects/stork/-/issues/1240#note_421412
* I could not run system tests. I get this error on `rake systemtest`. Not sure what is wrong. Sounds like an ...The issue was found by @andrei during 1.14 sanity checks: https://gitlab.isc.org/isc-projects/stork/-/issues/1240#note_421412
* I could not run system tests. I get this error on `rake systemtest`. Not sure what is wrong. Sounds like an encoding could be enforced somewhere.
```
143.7 Bundler version 2.3.26
143.7 /app/tools/ruby/bin/bundle install --gemfile /app/rakelib/init_deps/danger/Gemfile --path /app/tools/ruby --binstubs /app/tools/ruby/bin_bundle
143.7 Preparing: /app/tools/ruby/bin_bundle/danger...
143.7 mkdir -p /app/tools/ruby/bin_bundle
143.9 /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/yaml_serializer.rb:54:in `split': invalid byte sequence in US-ASCII (ArgumentError)
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/yaml_serializer.rb:54:in `load'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/settings.rb:459:in `block in load_config'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/shared_helpers.rb:103:in `filesystem_access'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/settings.rb:455:in `load_config'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/settings.rb:91:in `initialize'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler.rb:342:in `new'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler.rb:342:in `settings'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/env.rb:20:in `report'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:74:in `request_issue_report_for'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:53:in `log_error'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:126:in `rescue in with_friendly_errors'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:118:in `with_friendly_errors'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/exe/bundle:36:in `<top (required)>'
143.9 from /app/tools/ruby/bin/bundle:25:in `load'
143.9 from /app/tools/ruby/bin/bundle:25:in `<main>'
143.9 /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/yaml_serializer.rb:54:in `split': invalid byte sequence in US-ASCII (ArgumentError)
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/yaml_serializer.rb:54:in `load'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/settings.rb:459:in `block in load_config'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/shared_helpers.rb:103:in `filesystem_access'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/settings.rb:455:in `load_config'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/settings.rb:91:in `initialize'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler.rb:342:in `new'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler.rb:342:in `settings'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/cli.rb:66:in `initialize'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor.rb:388:in `new'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor.rb:388:in `dispatch'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/cli.rb:31:in `dispatch'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/vendor/thor/lib/thor/base.rb:485:in `start'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/cli.rb:25:in `start'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/exe/bundle:48:in `block in <top (required)>'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/lib/bundler/friendly_errors.rb:120:in `with_friendly_errors'
143.9 from /app/tools/ruby/gems/bundler-2.3.26/exe/bundle:36:in `<top (required)>'
143.9 from /app/tools/ruby/bin/bundle:25:in `load'
143.9 from /app/tools/ruby/bin/bundle:25:in `<main>'
143.9 rake aborted!
143.9 Command failed with status (1): [/app/tools/ruby/bin/bundle install --gemfi...]
143.9 /app/rakelib/00_init.rake:795:in `block in <top (required)>'
143.9 /app/rakelib/00_init.rake:133:in `block in find_and_prepare_deps'
143.9 /app/rakelib/00_init.rake:115:in `each'
143.9 /app/rakelib/00_init.rake:115:in `find_and_prepare_deps'
143.9 /app/rakelib/00_init.rake:1113:in `block in <top (required)>'
143.9 Tasks: TOP => /app/tools/ruby/bin_bundle/danger
143.9 (See full trace by running task with --trace)
```backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1250Syncing a new hook directory fails when running from tarball2023-12-19T14:43:29ZSlawek FigielSyncing a new hook directory fails when running from tarballThe issue was found by @andrei during 1.14 sanity checks: https://gitlab.isc.org/isc-projects/stork/-/issues/1240#note_421415
* If I do `rake hook:init MODULE=stork-server-ldap`, it initializes the git module correctly relative to the t...The issue was found by @andrei during 1.14 sanity checks: https://gitlab.isc.org/isc-projects/stork/-/issues/1240#note_421415
* If I do `rake hook:init MODULE=stork-server-ldap`, it initializes the git module correctly relative to the tarball content. However, if I do `rake hook:sync`, because the tarball is not a git repo, it goes all the way to the nearest parent git repository, and does some syncing there. I happen to have my home directory set up as a git repo, so I ended up with having some of my modules there modified. The task could instead check if there is a `.git` directory created at the same level as `Rakefile` first to determine if it is a tarball or a git repo. I also understand that this is not a task that you usually run on a tarball.
```
modified: .config/awesome/lain (new commits, modified content)
modified: .zprezto (modified content)
```backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1251LDAP hook: Build fails on some Linux distributions2023-12-19T14:47:34ZSlawek FigielLDAP hook: Build fails on some Linux distributionsThe issue was found by @andrei during 1.14 sanity checks: https://gitlab.isc.org/isc-projects/stork/-/issues/1240#note_421471
```
Another one I had forgotten. I understand that this one as well is not a task that you usually run on a ta...The issue was found by @andrei during 1.14 sanity checks: https://gitlab.isc.org/isc-projects/stork/-/issues/1240#note_421471
```
Another one I had forgotten. I understand that this one as well is not a task that you usually run on a tarball.
rake hook:init MODULE=stork-server-ldap; rake hook:build results in error when run on a tarball. It seems like it is not picking up on DEFAULT_HOOK_DIRECTORY.
rm -f
Removing old compiled hooks...
cp go.mod go.sum /tmp/d20231205-1147463-kn7j49
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/tools/golang/go/bin/go mod edit -replace isc.org/stork=../../../../../Descărcări/sanity-checks/stork-1.14.0/backend
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/tools/golang/go/bin/go mod tidy
rake build
Building stork-server-ldap...
mkdir -p build
rm
rm: missing operand
Try 'rm --help' for more information.
rake aborted!
Command failed with status (1): [rm...]
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/hooks/stork-server-ldap/Rakefile:17:in `block in <top (required)>'
Tasks: TOP => build
(See full trace by running task with --trace)
rake aborted!
Command failed with status (1): [rake build...]
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:150:in `block (4 levels) in <top (required)>'
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:141:in `block (3 levels) in <top (required)>'
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:66:in `block (3 levels) in forEachHook'
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:65:in `chdir'
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:65:in `block (2 levels) in forEachHook'
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:46:in `chdir'
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:46:in `block in forEachHook'
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:42:in `foreach'
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:42:in `forEachHook'
/home/andrei/Descărcări/sanity-checks/stork-1.14.0/rakelib/90_hooks.rake:139:in `block (2 levels) in <top (required)>'
Tasks: TOP => hook:build
(See full trace by running task with --trace)
```1.16https://gitlab.isc.org/isc-projects/stork/-/issues/1288404 if stork-server is installed in custom path2024-02-06T14:53:55ZAndrei Pavelandrei@isc.org404 if stork-server is installed in custom pathSteps
1. Install server in a custom location.
```sh
$ rake install:server DEST=/opt/stork-server
mkdir -p /opt/stork-server
cp -a -f dist/server/. /opt/stork-server
```
2. Start server.
```sh
$ stork-server
WARN[2024-01-30 15:16:24]...Steps
1. Install server in a custom location.
```sh
$ rake install:server DEST=/opt/stork-server
mkdir -p /opt/stork-server
cp -a -f dist/server/. /opt/stork-server
```
2. Start server.
```sh
$ stork-server
WARN[2024-01-30 15:16:24] restservice.go:354 Cannot read the base URL in the '/usr/share/stork/www/index.html' file because it is missing. If the files are located on separate machine, you need manually change the 'href' value of the <base> HTML tag to '/' error="open /usr/share/stork/www/index.html: no such file or directory"
```
3. Attempt to open the UI in browser.
> 404 page not found
Expectation was that I get served `/opt/stork-server/usr/share/stork/www/index.html` which exists.
---
Similarly, stork-server logs on startup:
```
WARN[2024-01-30 15:16:24] server.go:102 The hook directory: '/var/lib/stork-server/hooks' doesn't exist error="cannot find plugin paths in: /var/lib/stork-server/hooks: cannot list hook directory: /var/lib/stork-server/hooks: open /var/lib/stork-server/hooks: no such file or directory"
```
It would be nice if this was also looked up from the installation path and that the directory would be created on installation, so there would be no warnings by default.
This last one also happens with stork-agent.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1292Restore storybook plugins2024-02-13T14:37:10ZSlawek FigielRestore storybook pluginsDue to compatibility problems with the dynamic forms in Angular, we turned off some default Storybook plugins some time ago. We should restore them because they are pretty useful.
List of disabled plugins:
- `@storybook/addon-controls`...Due to compatibility problems with the dynamic forms in Angular, we turned off some default Storybook plugins some time ago. We should restore them because they are pretty useful.
List of disabled plugins:
- `@storybook/addon-controls`
- `@storybook/addon-actions`
This code was implemented originally in #800, but it is out-of-scope of that issue.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1300Check the minimum Java version in build system and describe it in docs2024-02-13T14:52:11ZSlawek FigielCheck the minimum Java version in build system and describe it in docsThe issue was found by @marcin during 1.15 sanity checks: https://gitlab.isc.org/isc-projects/stork/-/issues/1296#note_434164
The current version of the OpenAPI generator requires at least OpenJRE 11. The build system checks only if the...The issue was found by @marcin during 1.15 sanity checks: https://gitlab.isc.org/isc-projects/stork/-/issues/1296#note_434164
The current version of the OpenAPI generator requires at least OpenJRE 11. The build system checks only if the `java` binary is present and the documentation specifies that Java is required without providing a minimum version.
We should somehow cover the java requirement checks in the rake files or/and the docs.backloghttps://gitlab.isc.org/isc-projects/stork/-/issues/1293UI code coverage2024-02-13T14:38:49ZSlawek FigielUI code coverageWe have a utility to generate coverage for the backend but not for the frontend. We should fill this gap.
The development of this feature was excluded from #800.We have a utility to generate coverage for the backend but not for the frontend. We should fill this gap.
The development of this feature was excluded from #800.1.16