204795a74f
feat(failoverPostgres): Its alive! We can now deploy a multisite postgres instance. The public hostname is still hardcoded, we will have to fix that but the rest is good enough
Run Check Script / check (pull_request) Failing after 36s
2025-12-17 16:43:37 -05:00
66a9a76a6b
feat(postgres): Failover postgres example maybe working!? Added FailoverTopology implementations for required capabilities, documented a bit, some more tests, and quite a few utility functions
Run Check Script / check (pull_request) Failing after 1m49s
2025-12-17 14:35:10 -05:00
440e684b35
feat: Postgresql score based on the postgres capability now. true infrastructure abstraction!
Run Check Script / check (pull_request) Failing after 33s
2025-12-16 23:35:52 -05:00
b0383454f0
feat(types): Add utility initialization functions for StorageSize such as StorageSize::kb(324)
Run Check Script / check (pull_request) Failing after 41s
2025-12-16 16:24:53 -05:00
9e8f3ce52f
feat(postgres): Postgres Connection Test score now has a script that provides more insight. Not quite working properly but easy to improve at this point.
Run Check Script / check (pull_request) Failing after 43s
2025-12-16 15:53:54 -05:00
c3ec7070ec
feat: PostgreSQL public and Connection test score, also moved k8s_anywhere in a folder
Run Check Script / check (pull_request) Failing after 40s
2025-12-16 14:57:02 -05:00
29821d5e9f
feat: TlsPassthroughScore works, improved logging, fixed CRD
Run Check Script / check (pull_request) Failing after 35s
2025-12-15 19:09:10 -05:00
446e079595
wip: public postgres many fixes and refactoring to have a more cohesive routing management
Run Check Script / check (pull_request) Failing after 41s
2025-12-15 17:04:30 -05:00
e0da5764fb
feat(types): Added Rfc1123 String type, useful for k8s names
Run Check Script / check (pull_request) Failing after 38s
2025-12-15 12:57:52 -05:00
e9cab92585
feat: Impl TlsRoute for K8sAnywhereTopology
2025-12-14 22:22:09 -05:00
d06bd4dac6
feat: OKD route CRD and OKD specific route score
Run Check Script / check (pull_request) Successful in 1m30s
2025-12-14 17:05:26 -05:00
142300802d
wip: TlsRoute score first version
Run Check Script / check (pull_request) Failing after 1m11s
2025-12-14 06:19:33 -05:00
2254641f3d
fix: Tests, doctests, formatting
Run Check Script / check (pull_request) Successful in 1m38s
2025-12-13 17:56:53 -05:00
b61e4f9a96
wip: Expose postgres publicly. Created tlsroute capability and postgres implementations
Run Check Script / check (pull_request) Failing after 41s
2025-12-13 09:47:59 -05:00
2e367d88d4
feat: PostgreSQL score works, added postgresql example, tested on OKD 4.19, added note about incompatible default namespace settings
Run Check Script / check (pull_request) Failing after 2m37s
2025-12-11 22:54:57 -05:00
9edc42a665
feat: PostgreSQLScore happy path using cnpg operator
Run Check Script / check (pull_request) Failing after 37s
2025-12-11 14:36:39 -05:00
f242aafebb
feat: Subscription for cnpg-operator fixed default values, tested and added to operatorhub example.
Run Check Script / check (pull_request) Successful in 1m31s
2025-12-11 12:18:28 -05:00
3e14ebd62c
feat: cnpg operator score
Run Check Script / check (pull_request) Successful in 1m36s
2025-12-10 22:55:08 -05:00
1b19638df4
wip(failover): Started implementation of the FailoverTopology with PostgreSQL capability
...
Run Check Script / check (pull_request) Successful in 1m32s
This is our first Higher Order Topology (see ADR-015)
2025-12-10 21:15:51 -05:00
d39b1957cd
feat(k8s_app): OperatorhubCatalogSourceScore can now install the operatorhub catalogsource on a cluster that already has operator lifecycle manager installed
2025-12-10 16:58:58 -05:00
357ca93d90
wip: FailoverTopology implementation for PostgreSQL on the way!
2025-12-10 13:12:53 -05:00
8103932f23
doc: Initial documentation for the MultisitePostgreSQL module
2025-12-10 13:12:53 -05:00
9617e1cfde
Merge pull request 'adr: Higher order topologies' ( #197 ) from adr/015-higher-order-topologies into master
...
Compile and package harmony_composer / package_harmony_composer (push) Failing after 2m54s
Run Check Script / check (push) Successful in 1m47s
Reviewed-on: #197
2025-12-10 18:12:23 +00:00
a953284386
doc: Add note about counter-intuitive behavior of nmstate
Run Check Script / check (push) Successful in 1m33s
Compile and package harmony_composer / package_harmony_composer (push) Failing after 2m28s
2025-12-09 23:04:15 -05:00
bfde5f58ed
adr: Higher order topologies
...
Run Check Script / check (pull_request) Successful in 1m33s
These types of Topologies will orchestrate behavior in regular Topologies.
For example, a FailoverTopology is a Higher Order, it will orchestrate its capabilities between a primary and a replica topology. A great use case for this is a database deployment. The FailoverTopology will deploy both instances, connect them, and the able to execute the appropriate actions to promote de replica to primary and revert back to original state.
Other use cases are ShardedTopology, DecentralizedTopology, etc.
2025-12-09 11:23:30 -05:00
83c1cc82b6
fix(host_network): remove extra fields from bond config to prevent clashes ( #186 )
...
Run Check Script / check (push) Successful in 1m36s
Compile and package harmony_composer / package_harmony_composer (push) Successful in 8m16s
Also alias `port` to support both `port` and `ports` as per the nmstate spec.
Reviewed-on: #186
snapshot-latest
2025-11-11 14:12:56 +00:00
66d346a10c
fix(host_network): skip configuration for host with only 1 interface/port ( #185 )
...
Run Check Script / check (push) Successful in 1m11s
Compile and package harmony_composer / package_harmony_composer (push) Successful in 8m11s
Reviewed-on: #185
Reviewed-by: johnride <jg@nationtech.io >
2025-11-06 00:07:20 +00:00
06a004a65d
refactor(host_network): extract NetworkManager as a reusable component ( #183 )
...
Run Check Script / check (push) Successful in 1m12s
Compile and package harmony_composer / package_harmony_composer (push) Has been cancelled
The NetworkManager logic was implemented directly into the `HaClusterTopology`, which wasn't directly its concern and prevented us from being able to reuse that NetworkManaager implementations in the future for a different Topology.
* Extract a `NetworkManager` trait
* Implement a `OpenShiftNmStateNetworkManager` for `NetworkManager`
* Dynamically instantiate the NetworkManager in the Topology to delegate calls to it
Reviewed-on: #183
Reviewed-by: johnride <jg@nationtech.io >
2025-11-06 00:02:52 +00:00
9d4e6acac0
fix(host_network): retrieve proper hostname and next available bond id ( #182 )
...
Run Check Script / check (push) Successful in 1m9s
Compile and package harmony_composer / package_harmony_composer (push) Failing after 2m24s
In order to query the current network state `NodeNetworkState` and to apply a `NodeNetworkConfigurationPolicy` for a given node, we first needed to find its hostname. As all we had was the UUID of a node.
We had different options available (e.g. updating the Harmony Inventory Agent to retrieve it, store it in the OKD installation pipeline on assignation, etc.). But for the sake of simplicity and for better flexibility (e.g. being able to run this score on a cluster that wasn't setup with Harmony), the `hostname` was retrieved directly in the cluster by running the equivalent of `kubectl get nodes -o yaml` and matching the nodes with the system UUID.
### Other changes
* Find the next available bond id for a node
* Apply a network config policy for a node (configuring a bond in our case)
* Adjust the CRDs for NMState
Note: to see a quick demo, watch the recording in #183
Reviewed-on: #182
Reviewed-by: johnride <jg@nationtech.io >
2025-11-05 23:38:24 +00:00
4ff57062ae
Merge pull request 'feat(kube): Convert kube_openapi Resource to DynamicObject' ( #180 ) from feat/kube_convert_dynamic_resource into master
...
Run Check Script / check (push) Successful in 1m19s
Compile and package harmony_composer / package_harmony_composer (push) Failing after 2m23s
Reviewed-on: #180
Reviewed-by: Ian Letourneau <ian@noma.to >
2025-11-05 21:48:32 +00:00
50ce54ea66
Merge pull request 'fix(opnsense-config): mark Interface::enable as optional' ( #181 ) from fix-opnsense-config into master
...
Run Check Script / check (push) Successful in 1m12s
Compile and package harmony_composer / package_harmony_composer (push) Failing after 2m27s
Reviewed-on: #181
2025-11-05 17:13:29 +00:00
Ian Letourneau
827a49e56b
fix(opnsense-config): mark Interface::enable as optional
Run Check Script / check (pull_request) Successful in 1m11s
2025-11-04 17:25:30 -05:00
95cfc03518
feat(kube): Utility function to convert kube_openapi Resource to DynamicObject. This will allow initializing resources strongly typed and then bundle various types into a list of DynamicObject
Run Check Script / check (pull_request) Successful in 1m18s
2025-10-29 17:24:35 -04:00
c80ede706b
fix(host_network): adjust bond & port-channel configuration (partial) ( #175 )
...
Run Check Script / check (push) Successful in 1m20s
Compile and package harmony_composer / package_harmony_composer (push) Failing after 2m21s
## Description
* Replace the CatalogSource approach to install the OperatorHub.io catalog by a more simple & straightforward way to install NMState
* Improve logging
* Add report summarizing the host network configuration that was applied (which host, bonds, port-channels)
* Fix command to find next available port channel id
## Extra info
Using the `apply_url` approach to install the NMState operator isn't the best approach: it's harder to maintain and upgrade. But it helps us achieve waht we wanted for now: install the NMState Operator to configure bonds on a host.
The preferred approach, installing an operator from the OperatorHub.io catalog, didn't work for now. We had a timeout error with DeadlineExceeded probably caused by an insufficient CPU/Memory allocation to query such a big catalog, even though we tweaked the RAM allocation (we couldn't find a way to do it for CPU).
Spent too much time on this so we stopped these efforts for now. It would be good to get back to it when we need to install something else from a custom catalog.
Reviewed-on: #175
2025-10-29 17:09:16 +00:00
b2825ec1ef
Merge pull request 'feat/impl_installable_crd_prometheus' ( #170 ) from feat/impl_installable_crd_prometheus into master
...
Run Check Script / check (push) Successful in 1m25s
Compile and package harmony_composer / package_harmony_composer (push) Failing after 2m20s
Reviewed-on: #170
2025-10-24 16:42:54 +00:00
609d7acb5d
feat: impl clone_box for ScrapeTarget<CRDPrometheus>
Run Check Script / check (pull_request) Successful in 1m25s
2025-10-24 12:05:54 -04:00
de761cf538
Merge branch 'master' into feat/impl_installable_crd_prometheus
2025-10-24 11:23:56 -04:00
c069207f12
Merge pull request 'refactor(ha_cluster): inject switch client for better testability' ( #174 ) from switch-client into master
...
Run Check Script / check (push) Successful in 1m44s
Compile and package harmony_composer / package_harmony_composer (push) Failing after 2m43s
Reviewed-on: #174
2025-10-23 15:05:17 +00:00
Ian Letourneau
7368184917
fix(ha_cluster): inject switch client for better testability
Run Check Script / check (pull_request) Successful in 1m30s
2025-10-22 15:12:53 -04:00
05205f4ac1
Merge pull request 'feat: scrape targets to be able to get snmp alerts from machines to prometheus' ( #171 ) from feat/scrape_target into master
...
Run Check Script / check (push) Waiting to run
Compile and package harmony_composer / package_harmony_composer (push) Waiting to run
Reviewed-on: #171
2025-10-22 15:33:24 +00:00
3174645c97
Merge branch 'master' into feat/scrape_target
Run Check Script / check (pull_request) Successful in 1m32s
2025-10-22 15:33:01 +00:00
7536f4ec4b
Merge pull request 'fix: fixed merge error that somehow got missed' ( #172 ) from fix/merge_error into master
...
Run Check Script / check (push) Waiting to run
Compile and package harmony_composer / package_harmony_composer (push) Waiting to run
Reviewed-on: #172
2025-10-21 16:02:39 +00:00
464347d3e5
fix: fixed merge error that somehow got missed
Run Check Script / check (pull_request) Has been cancelled
2025-10-21 12:01:31 -04:00
7f415f5b98
Merge pull request 'feat: K8sFlavour' ( #161 ) from feat/detect_k8s_flavour into master
...
Run Check Script / check (push) Waiting to run
Compile and package harmony_composer / package_harmony_composer (push) Waiting to run
Reviewed-on: #161
2025-10-21 15:56:47 +00:00
2a520a1d7c
Merge branch 'master' into feat/detect_k8s_flavour
Run Check Script / check (pull_request) Has been cancelled
2025-10-21 15:56:18 +00:00
987f195e2f
feat(cert-manager): add cluster issuer to okd cluster score ( #157 )
...
Run Check Script / check (push) Waiting to run
Compile and package harmony_composer / package_harmony_composer (push) Waiting to run
added score to install okd cluster issuer
Reviewed-on: #157
2025-10-21 15:55:55 +00:00
14d1823d15
fix: remove ceph osd deletes and purges osd from ceph osd tree\ ( #120 )
...
Run Check Script / check (push) Waiting to run
Compile and package harmony_composer / package_harmony_composer (push) Waiting to run
k8s returns None rather than zero when checking deployment for replicas
exec_app requires commands 's' and '-c' to run correctly
Reviewed-on: #120
Co-authored-by: Willem <wrolleman@nationtech.io >
Co-committed-by: Willem <wrolleman@nationtech.io >
2025-10-21 15:54:51 +00:00
2a48d51479
fix: naming of k8s distribution
Run Check Script / check (pull_request) Has been cancelled
2025-10-21 11:09:45 -04:00
20a227bb41
Merge branch 'master' into feat/detect_k8s_flavour
Run Check Script / check (pull_request) Has been cancelled
2025-10-21 15:02:15 +00:00
ce91ee0168
fix: removed dead code, mapped error from grafana operator to preparation error rather than ignoring it, modified k8sprometheus score to unwrap_or_default() service monitors
Run Check Script / check (pull_request) Has been cancelled
2025-10-20 15:31:06 -04:00