github loft-sh/loft v5.0.0-alpha.3

pre-release2 hours ago

Changelog

  • 7ad1fe2e12b5052e57d25a93190df1fad91a1525: Add yarn install to dev-ui recipe (#8614) (@kaihulme)
  • d13cc1493f2b1fdd22968d0a6bab3570308424c6: Automatically set neutron.enabled in metal3 chart (#7895) (@squ94wk)
  • 1e4f391750cc89531d04278a6ae383031e948a1e: Block NodeClaim destroy until node is drained (#7837) (@squ94wk)
  • 317dacf96f5fb54709a571e4b24d432e402033c7: CTO-201 Graceful drain UI (#7893) (@squ94wk)
  • ce46bca38f0f91db7ab144f8b5e42b8c1af86d51: CTO-207 Make metal3 HA the default (#7890) (@squ94wk)
  • 2b7fec9546321b8baceba61414112f2ec5b1098e: ENG-12838 redfish explorer (#8491) (@squ94wk)
  • e10114128b792a1b16e6fad18dc63385db6f5e61: ENGCP-1687 - keep peers that reconnected through another replica (#8606) (@matskiv)
  • b8a08ef6026083aad3dd9f627ef659477feefc01: Fix: NodeClaim delete deadlocks on draining (#7933) (@squ94wk)
  • 096751758ed7fdd751ccb1eae08b961f805c7975: Fix: ipa-images url & allow overrides (#7930) (@squ94wk)
  • ad79e2acf9f1290c484f0255ade6023c30dc442b: Revert "chore(deps): update docker-golang" (#8204) (@FabianKramm)
  • b43212f2efbbdc3b1f946dc584e8d3a39b70da17: Update nodes team to apps (@cbron)
  • 1c381956a24b45e65c72cc7f33aa31d3ad5336e6: Updates codeowners (#8132) (@cbron)
  • e8eb675e320e85176ba357c2ac660742632694e1: Upgrade metal3 provider deploy chart (#8192) (@squ94wk)
  • 8ad6680d2dd225e035aba1da20c4e9c6b363c689: adds: e2e test for auto snapshot support for standalone (#7955) (@jjaferson)
  • 8f3b148363dde32e5710ea65545a2d6b44fbae98: chore(api): regenerate apis for the osimage finalize subresource (@r0bnet)
  • dc8d5224f9d3259344b57acc228b9b146fcfbb75: chore(api): regenerate apis for the osimage status (@r0bnet)
  • 462f136c1f962a099ebe989f82c20037495313ee: chore(api): regenerate apis for the osimage upload paging fields (@r0bnet)
  • ac4dc160320e3f5d6b32cd735252658a659e5572: chore(api): regenerate for the store-neutral upload target wording (@r0bnet)
  • 4b8fb2bfacb4f533eddb15448cef1837ebdd07ff: chore(api): regenerate go apis for the osimage upload subresource (@r0bnet)
  • d6ff3515984268a23516ebf625d4c0422f990c14: chore(api): regenerate swagger and typescript client for osimages/upload (@r0bnet)
  • 670dd6da72660499889730903da560ffdb08df36: chore(ci): pass branch cleanup slack webhook (#8346) (@Piotr1215)
  • ed167563c81f4055d911706da07c9031fd2cf361: chore(codegen): regenerate stale swagger and agent openapi (@r0bnet)
  • ed2ae94c3a8b14cfa7d634e468e561b9c49e5aad: chore(codegen): regenerate stale swagger spec (#8184) (@r0bnet)
  • 7ac9a23f83c3c0733cfca941e712f3c662b0b6a1: chore(codeowners): drop the redundant nodeclaim/controller.go entry (#8325) (@rlmcpherson)
  • 90a0a14989b038dcd75203c3e4896e841e0a9023: chore(codeowners): drop the remaining per-file auto nodes entries (#8326) (@rlmcpherson)
  • 705f6cd78bf525166c7f9546a0d001a26e97438a: chore(codeowners): move the nodes controllers to eng-control-plane (#8323) (@rlmcpherson)
  • 6259a7b36943282a5e859ec51b30b0c755fa2170: chore(constants): set default version to 0.37.0 (@r0bnet)
  • e7cfbb17b56b2a2a574acdf12214b573228064f9: chore(cve-fix): bump helm and prometheus to patch CVEs (#7788) (@neogopher)
  • e47205d86fd3915492ff82c26b1dc7444835f41c: chore(deps): bump admin-apis for the tenant limit (@johannesfrey)
  • 38bd2d5fbb956269eedef85b7eb14604bfeeb246: chore(deps): bump e2e-framework to fix podexec combinedoutput segfault (@seanschneeweiss)
  • 2b504f6265f0d408585231b371a6f71d7de614de: chore(deps): update certified vcluster template versions (@vcauesantos)
  • 3013ca8f3456ad37c98bf54546a186f51b5632d4: chore(deps): update dependency air-verse/air to v1.67.4 (@renovate[bot])
  • 58211bcfa706cf373de22e09077adc84f7e03b06: chore(deps): update dependency golangci/golangci-lint to v2.7.2 (#8073) (@renovate[bot])
  • 224813841b9f2ecb9e5a287eb3e5dffeb1ace17e: chore(deps): update dependency helm/helm to v3.21.4 (#8074) (@renovate[bot])
  • 8b412472cb4541c4082735e0e0430caa3de0cba4: chore(deps): update dependency loft-sh/devspace to v6.3.21 (#8075) (@renovate[bot])
  • d82b49894135bcf0309eedc290488a5685459be9: chore(deps): update docker-golang (@renovate[bot])
  • 2cb818002d057c0381a0847f6fb3183a5e27a4a0: chore(deps): update docker-golang (#8080) (@renovate[bot])
  • df68cf73bed0b90d83e186485cdb89f4a7966e29: chore(deps): update docker.io/postgres docker tag to v17.10 (#8160) (@renovate[bot])
  • 5fd8f88407b18926cbdc634b5994b1bead72a957: chore(deps): update google.golang.org/genproto digest to d0f1323 (#8119) (@renovate[bot])
  • 7778f36b735dcb8348e951c1c6bff21f5dd60922: chore(deps): update google.golang.org/genproto digest to f61a6ca (#8171) (@renovate[bot])
  • 1416f6b5f02a11978fe287e170dc0f0cf2aa51eb: chore(deps): update helm release vcluster to v0.37.1 (@renovate[bot])
  • caba0df73c9ab69cb8b8cbdcee967c8781082712: chore(deps): update terraform aws to v5.100.0 (#8166) (@renovate[bot])
  • c63412f1cf1e8e923a1d7dcbfad9ca40de079a0d: chore(deps): update terraform tls to v4.0.6 (#8111) (@renovate[bot])
  • 757bc38707040aab841435e9e185d682e001515e: chore(deps): upgrade aws-sdk-go-v2 and smithy-go (@roehrijn)
  • f01d9d0515592666bee8d24aed41929f41338a77: chore(e2e): run ginkgo with output-interceptor-mode none (#8476) (@roehrijn)
  • 1ff72371db839dd2cfde577666b720f905ff1ead: chore(go.mod): bump admin-apis (@seanschneeweiss)
  • 653ad020ac995ba7b78cc7e233dbe30a14ffa0c5: chore(observability): create datasources for enabled clusters only (#7717) (@seanschneeweiss)
  • 5eaf16f996a6a1fa08db9801a4b92d9e9e9f553b: chore(renovate): sync backport base branches to active releases (#7881) (@loft-bot)
  • b46d69ec44b98fbe9d8bca36f953fdaf9ea995e8: chore(renovate): sync backport base branches to active releases (#8270) (@loft-bot)
  • 7cf5f1e2282903e44f6831d6deaf6c26e88fe44b: chore(security): exclude vendor/ from secret scanning (#7961) (@Piotr1215)
  • 0f2d256a7707e7f82b25482d0530e35b25b5edd0: chore(ui): add focused unit and e2e coverage (@andyluak)
  • 0f6539d4d8eecedd943e8c9fe61e794a3894a9f1: chore(ui): enforce test boundaries and remove redundant tests (@andyluak)
  • de82d07fedce6fa63b8932406ba8ec5a4e8c6641: chore(ui): scope vcluster hooks to suites (@andyluak)
  • 599fd5affb23eb8531d81f5573790a1b0a993f07: chore: Remove experimental feature gating for multi tenancy (@PRTTMPRPHT)
  • 78522dee2586250f84d3b36a95629159b8558062: chore: Remove obsolete cast in UserTenancy query (@PRTTMPRPHT)
  • 4273d341f2c2f0b7b4130a2b73ca65dc4fce66e9: chore: bump certified Run:ai stack vcluster chart version to 0.37.0 (Claude Sonnet 5 noreply@anthropic.com)
  • 738c7bf46d7988132326b2e2f08f26242ebfabda: chore: bump vcluster version (#8305) (@jjaferson)
  • d883732ae56fa79af613b6147c5f3b9401d8f905: chore: fix review comments (@r0bnet)
  • 91994885c4a82b91fab49f090344bc95f1fc79ee: chore: replace tech-leads with staff-engs in codeowners (#7786) (@janekbaraniewski)
  • 449bb2b6370cefc80f28e242812bf04344d936be: chore: update certified stacks to v2.0.0 (@zerbitx)
  • 10bd633a8125570c9ffc5378a26a2cb764fa9327: chore: use "cluster" in default template descriptions (@andyluak)
  • 1fa8b44e21acc6b1547ff951db5637e603ea7fb8: ci(backport): schedule link sweep (#8123) (@Piotr1215)
  • 7977189bef5f7c04d6afee3ef49a894c7e41155d: ci(e2e): annotate the docker/login-action pin with its version (@roehrijn)
  • 1ba7a28dc2b36a860904664142e61e24e7798647: ci(e2e): give /test-e2e checks their own group with the ci app (#8576) (@vcauesantos)
  • 41ead56be91ad7945fd78ed4609b41636f3ac3c4: ci(e2e): let /test-e2e run hyperscaler suites, title command runs, refresh stale text (#8519) (@vcauesantos)
  • fd8b3b3329a6d495fedf97693f1c26e03c65b099: ci(e2e): let the AWS session outlive the 120m ginkgo timeout (#8407) (@sowmyav27)
  • 0b0bed585a56fec7da1cbb5e45bca36ae8ba4a80: ci(e2e): show the dispatch error instead of checking a contract file (#8518) (@vcauesantos)
  • 5b59d278bf9b3630f9fd73ba6e8dbd828e550c5d: ci(release): let goreleaser generate the changelog (#8677) (@sydorovdmytro)
  • 3e9a37a2558ff30831b42003cd9ad9f2fe381647: ci(release): notify repositories only from the release builder (#8422) (@sydorovdmytro)
  • 766920fb52b1dae747d68063d9e29b646cea1ff3: ci(release): run linear sync from a reusable workflow (#8668) (@sydorovdmytro)
  • ed9bd9e607d3fd94c17cec8c9f35f572ae5894cc: ci(unit-tests): cut the unit test job from 33 to 10 minutes (#8499) (@roehrijn)
  • 4fd03403d19ab89ce7c6accd66440bd63b45dd45: ci: bump actionlint reusable workflow pin (#7899) (@sydorovdmytro)
  • 34f77cc02315e6123c7b077ece2cee01af4f1b72: ci: convert release pipeline to dispatcher + tag-dispatched validators (#7829) (@sydorovdmytro)
  • aa9b2f3b2c052ef827fdbc15e20d7fdd380ce74e: ci: mirror container cve scans into platform workflows (#8256) (@vcauesantos)
  • 914d2fc20e1e9015f8dbdbb8e922bb78d320a31d: ci: route cve scan alerts to #ci-security-scans (#8380) (@vcauesantos)
  • 991c8fed14c35b631974089a4700c9c2ce3828b3: ci: run the reserved machines checks from the release pipeline (#8505) (@adriankabala)
  • 60d48dabce22cbaf55ba6afe190df6e94719a892: docs(connectors): deprecate the list-only DatabaseConnector resource (#8269) (@nprokopic)
  • a2011ffc74189175d3f5557914816b9f9ef0d753: docs(e2e): fix stale DeleteVPC comments after siteworker registers DeleteVPCV2 (@roehrijn)
  • e62decb4257cb5bd86d68b4ff73c40340522bdda: docs(e2e): say how to write a keyed label in a test-e2e filter (#8451) (@r0bnet)
  • 9ac536b66a38e9fadc7f2f4f6c00e6fdb4738b28: docs(e2e): use a real label in the /test-e2e template example (#8513) (@vcauesantos)
  • d82d03ce7a58187e921ec505a91420788fddcfa3: docs(genericapiserver): drop a false claim about the collection delete's client (#8158) (@lizardruss)
  • 9aa2709b901532640af875ea93dde341410e7aa3: docs(github): document /vcluster-review in the pr template (#8070) (@Piotr1215)
  • 570632af7171f2ac01ed6945f95cfd7c7da0fa9a: docs(release): say a re-run replaces the summary in place (#8689) (@Piotr1215)
  • dfd5adbde84b47463c71d60817185c3d451ac80e: docs(tenancy): add the tenancy-client skill (#8427) (@lizardruss)
  • ca8bfac14277c8e4e1fb7d48f45361e336adf962: docs(tenant): correct why the user-limit check is create-only (@johannesfrey)
  • e5fb684636928fcbc8c01bba0336ecdfe5cf9e22: feat(api): give osimage an upload status (@r0bnet)
  • cee75b600548497ab5d2529e5c52c934316dd11f: feat(apiserver): reject observability config the platform cannot serve (#7966) (@johannesfrey)
  • 772f7f5560178cb1e199e29447a0db2577061972: feat(apiserver): serve the observability connector credential endpoint (#7964) (@johannesfrey)
  • ee3d77db4b7c641290a8230f20ff35d21c5bd9f5: feat(argocd): let users set labels on registered clusters (#8302) (@flomedja)
  • 4f9a240f6975c782d26c0d068b01b71d0f5b3600: feat(audit): record login and access key events (#8082) (@neogopher)
  • 4fd5848e2c535acfd41ac8927d1cc428996c674f: feat(autoscaling): block deleting provision-for-vms instances with running VMs (#8312) (@cbalan)
  • 618cf0758de055d750d1fca62711659b10b76eeb: feat(autoscaling): cap vms per node type on provision-for-vms machines (@cbalan)
  • d3d5f449fdf65b3334f7e1cc59581e4ab6529543: feat(autoscaling): enable nico phone home by default (@roehrijn)
  • 886ede1c38c0367ca03887f9c2b7f272bbd730f5: feat(autoscaling): give each tenant its own namespace for kubevirt VMs (#8540) (@cbalan)
  • 26895ea2c4c75f318a16f69134247de4cf18be7a: feat(autoscaling): join provision-for-vms machines to the kubevirt cluster (#8272) (@cbalan)
  • 31b24568cbbd2f9708c6db4b39cb2c66f117f722: feat(autoscaling): move accepted node types and caps into the claim spec (#8440) (@cbalan)
  • 7648c552bd73afb9c4982ce8a00272bc8d61a19d: feat(autoscaling): place kubevirt VMs by the machine allocation policy (#8503) (@cbalan)
  • e155147de6ff8a91744fc5008060a47458027865: feat(connectors): add the Connector management API type (#8262) (@nprokopic)
  • 21af3b9de1bb316e5d66376d876bad9cd66d6163: feat(connectors): add the argocd connector type (#8264) (@nprokopic)
  • 58fc76b69f8934691a3cc2649cb9bca13d3756f3: feat(connectors): add the netbox connector type (#8268) (@nprokopic)
  • 88777115a549cb2c122fce996d9340f705071a44: feat(connectors): add the observability connector type (#8265) (@nprokopic)
  • c5e40f54e976e42c7021c7f48a6de78344e9662a: feat(connectors): add the os-image-store connector type (@janekbaraniewski)
  • 478304bbd8c90a9336838361ce653d4053b8e109: feat(connectors): implement the Connector REST verbs for the shared-database type (#8263) (@nprokopic)
  • 1971de3e854813b2d6243135683e7891f67d1c9c: feat(connectors): refuse connectors a tenant may not use at write time (#8498) (@johannesfrey)
  • 3382ec07450c97bdf2ab45d10c1a3dd089a13b04: feat(dev): seed a local pod-backed node provider (@janekbaraniewski)
  • ad34b948086e1d4f7be0c0e345790bf0d68df7b3: feat(e2e): add the /test-e2e comment command (#8064) (@vcauesantos)
  • 12b1c8c7edb4a234a88b25d4893c1f79df85a4f5: feat(kube-ovn): kube-ovn CCM UI (#7827) (@squ94wk)
  • 2575508142b412e5f1de74c3e4fd51a3f3415214: feat(license): count tenants against a tenant limit (@johannesfrey)
  • 4e1b529f8782c9694efcb06f73c2fb3f99e67d46: feat(metal3): skip tls verification for os image downloads by default (#8553) (@r0bnet)
  • f4291401256ee547257f6cda5fccc4642e5635a7: feat(networkenvironment): offer and accept an environment only for its own node provider (#8322) (@rlmcpherson)
  • 3ff67e36eba852cfeb22da48c6b2016bf3c1a8bc: feat(nico): grant a tenant account targeted instance creation (@mfranczy)
  • 42ec18a0450683faa87fcd86ee451f8d375b8ce0: feat(nico): support flat networking for hosts without DPUs (@janekbaraniewski)
  • ada39268f301e726b5dac1fe80a03e91ce5547ca: feat(nico): support platform tenant workloads (@janekbaraniewski)
  • 1b6afdef310c96c80fb9628765e9ff000b35b182: feat(observability): read cluster collector credentials from the metrics-writer secret (#7987) (@johannesfrey)
  • c3bc43d059c8da11058106f0c742d3c3bce47d4f: feat(observability): report unresolvable connectors on the instance (#7967) (@johannesfrey)
  • 4f91caceae2a11eee9b6d7471d705c92b64e164f: feat(observability): resolve an instance's connector into a write gateway (#7963) (@johannesfrey)
  • 4ff9d6271b8910ee68b2766b7f2b15eff38d8091: feat(observability): scrape tenant control plane backing store metrics (#7989) (@johannesfrey)
  • 9c271031f569259d087ad6f96475033e22c7aa69: feat(osimage): add connectorRef, format and upload subresource types (@r0bnet)
  • 75a3728dc171ea53e9563fba14d8604231f347b4: feat(osimage): add image store with pre-signed multipart uploads (@r0bnet)
  • 5952cd7406a7769a5d038f1f542118b6d3a4d509: feat(osimage): add paging fields to the upload subresource types (@r0bnet)
  • f6fc72a573f9f5a110c9ff8233e65266e3a9f584: feat(osimage): adopt the os-image-store connector (#8431) (@r0bnet)
  • 2db0521bfba1c4d818f3c697f780474f5cc9c057: feat(osimage): boot node providers from an uploaded image (#8398) (@r0bnet)
  • 4b09b15d8ee53758c238302b688640b2197d6ad9: feat(osimage): gate the store-backed path behind machine-management (#8371) (@r0bnet)
  • 1d706defead2388e4343ebb663d1fb877f2847db: feat(osimage): page upload targets and report the next batch (@r0bnet)
  • c9b6e1aa55cf741af863f376635160f376838a81: feat(osimage): reconcile the upload lifecycle (@r0bnet)
  • c9274d1e2f1a69177fef655743fc306985ab6722: feat(osimage): register the upload subresource and audit it as sensitive (@r0bnet)
  • 0fa0c70607ddd2bf2f38a71478f792d31b83a633: feat(osimage): serve osimages/finalize and assemble the object (@r0bnet)
  • d72829aaf541329c965a1ecd7a9bbcd8297fdb05: feat(osimage): serve osimages/upload with pre-signed part targets (@r0bnet)
  • ab088d09a005435c004cd00d7d43a4a662d835be: feat(osimage): unauthenticated blob endpoint and delete cleanup (#8295) (@r0bnet)
  • 57f28d12394d2c97f1f6a90d070033172c3e163e: feat(release): post an ai summary of each release in its banner thread (#8657) (@Piotr1215)
  • eb48f0f2221127c4e3cc11af40e151aa6bc89cb1: feat(stack): add task outputs for stack instances (#7727) (@flomedja)
  • 750f1d0f3cf799ffd04c521b7c49215c73ca38bb: feat(stack): add the App task type for stack instances (#7783) (@flomedja)
  • 354368288959227432293169b33b96b9726a405c: feat(stack): deploy stacks from a virtual cluster's vcluster.yaml (#7869) (@flomedja)
  • 8e4e58166298970e13f0d68e43d7b55de9472066: feat(stacks): Allow jsonPaths to be conditionally rendered. (#7975) (@zerbitx)
  • 436285c7077e9f65bb452bb7568ebc24ce31017a: feat(stacks): embed run:ai manifests (#7917) (@zerbitx)
  • 72ac19a386d569fe781553f54119bdf888756db8: feat(stacks): let certified stacks ship ArgoCD templates (#8389) (@flomedja)
  • 6e4f0183132f2b04d22ebd01e01db0556d84e058: feat(tenancy): a disabled capability withholds the kind outright (#8337) (@lizardruss)
  • 9646fd0b842d737dc327b260b787e589f33787fa: feat(tenancy): give every kind the authorizer reads a considered rule (#8457) (@lizardruss)
  • c13befdf44fc1ed5a2128c66414b43f6de089a4e: feat(tenancy): give the platform a tenant to consume as, and scope the providers (#8241) (@lizardruss)
  • bd37d57098494ba3b2d28b9b7daefd5d70ad8332: feat(tenancy): share one instance with every tenant (#8338) (@lizardruss)
  • bc515967329d867f5506d3bab9e932415810bad6: feat(tenant): bootstrap admin user on tenant creation (#7876) (@seanschneeweiss)
  • c56e3c957937568bc5599633b22880baa9753a7d: feat(tenant): bootstrap project on tenant creation (#7910) (@seanschneeweiss)
  • 435792e54de9c7662d8fb016f42157186d03bbc2: feat(tenant): enforce the license tenant limit on creation (@johannesfrey)
  • f4f50794b94b3da7798713bbff758daac98b496b: feat(tenant): enforce the license user limit on tenant creation (@johannesfrey)
  • d5f6096a5f40a95fb6eea69103571fc13353b9d1: feat(tenant): pre-auth host resolution and host-uniqueness admission (#7770) (@lizardruss)
  • 79b817e9e6d73cd5cfd03b6bb5f86dedae648502: feat(tenant): put a tenant admin's privilege on a per-tenant team (#8077) (@seanschneeweiss)
  • c29f19722915623b26d495d1047a43b31c928c61: feat(tenant): report tenant membership on the self response (#7833) (@lizardruss)
  • 928ac2f97634c134490eda27d7518a89730fd1dd: feat(tenant): require a tenant's prefix on the cluster-scoped names it owns (#8002) (@johannesfrey)
  • 8902e102fe7a175b79661d3bd1d64ae84d43b4d1: feat(tenant): resolve group membership within a tenant (#8219) (@seanschneeweiss)
  • 448c3883df91dc0c4a538cceb6e8e8a0a96be5f8: feat(tenant): resolve tenant from the authenticated identity (#7832) (@lizardruss)
  • 06b9dbab065bb01ed6187a8cb70c10214821abb9: feat(tenant): scope tenant reads by capability (#7941) (@lizardruss)
  • 2bbd637ba922062cb5ee993ae105b3475a3128d2: feat(tenant): serve per-tenant UI settings to authenticated tenant users (#7880) (@nprokopic)
  • e079bdb6e6efabaabfcc4a77f2928aaa45aebd10: feat(tenant): serve sharedsecrets through the scoped client (#8068) (@lizardruss)
  • f15326080b2dee60e1223daad8fbc7b520e94a57: feat(tenant): share connectors with a tenant by label (#8428) (@johannesfrey)
  • c11e6d8dc4eaacefcfc03aab84a26226494856af: feat(ui) - fix broken e2e tests (@andyluak)
  • 1ba3b07db3f7b95ee374af14aea8b54ff51bef05: feat(ui) - fix e2e test (@andyluak)
  • d014bc38c3bf042d1428916540e3ee71deb7320c: feat(ui) - fix e2e tests (@andyluak)
  • 45558823297ad364388084f2d3007f3a0eb92bd5: feat(ui) - fix stacks navigation (@andyluak)
  • acd34a37720242f0b8c25eef10a6eb22f40f4c69: feat(ui) - improve app templates deletion refereces to stacks (@andyluak)
  • 1e1b2783c7f5af5388d094957502fd611a3d25f5: feat(ui) - initial (@andyluak)
  • cf6ed6d1db0a10dcc5d2b9d9acac8e09253254d7: feat(ui) - keep 403 on the access-denied screen (@andyluak)
  • 8f72c4d5f49152bda28271606795dbcec501c451: feat(ui) - network env section (@andyluak)
  • 5aa6db6ef1d7655163a585372e31b5e38c4c9bcd: feat(ui) - os images required (@andyluak)
  • 976dae5d5187548255f14e37f18da0026500d932: feat(ui) - pr review (@andyluak)
  • 9b41609ba990afbd55fe00d9ab7cd5f0846c33f7: feat(ui) - pr review (@andyluak)
  • 75616f249bf3c2a9d1916c93565fd1cc41b03b85: feat(ui) - pr review (@andyluak)
  • 4f59a19ddc6995d1cabc9f223137fd50b01e6dc4: feat(ui) - pr review (@andyluak)
  • 7d2a2a4e99a05f2c0bbaaea4faeebfc99ef56ddb: feat(ui) - pr review (@andyluak)
  • 31e0b87a1090a50b16de5977fa785eebd5ba7e65: feat(ui) - pr review (@andyluak)
  • fb7f8bb34cbcf7b8774b00e19c0939522b7d19dd: feat(ui) - pr review (@andyluak)
  • 054ba17c155af1bf7402e0c75b8869a61417d53f: feat(ui) - pr review (@andyluak)
  • ff84a4c6dcfaf15b4f3d04eb4bf4df9bedfc40b3: feat(ui) - pr review (@andyluak)
  • 1bb7bdc2d458e43c1190a05e3470fdc8fcd989dc: feat(ui) - pr review (@andyluak)
  • d70031170b190db0f4a41bcb4bbb22781bdb44d2: feat(ui) - pr review (@andyluak)
  • 60532d7c098907e67fd23a226d9fde23f1dd2de0: feat(ui) - pr review (@andyluak)
  • c82c1c1b6bfff615c70228868bdc4ae90ed6cc76: feat(ui) - pr review (@andyluak)
  • d27d6ff3cca569b6a59218c848e8a53d69b133db: feat(ui) - pr review (@andyluak)
  • 2c4baca0a512e59ce4213e2e2f0270677b2e4771: feat(ui) - pr review (@andyluak)
  • 6b74244cc294d922816defa6d401c893a71cc34a: feat(ui) - provision action and create instance (@andyluak)
  • 06a6add9cde0d7e36348f19a9c2b7842c396f1db: feat(ui) - remove broken test (@andyluak)
  • 06903da43bff47777ce483cd1553e68f12cadabd: feat(ui) - rename tenant clusters to cluster (@andyluak)
  • 5ef9e4583edb475a8183dc459235415d79b27590: feat(ui) - replace node provider and network env with constants (@andyluak)
  • bb9896793ac56157e6a50db88e7dd09f7772209a: feat(ui) - sidebar redesign (@andyluak)
  • f93d62b44b776f2fd8a49c82ef8a605ab202eed8: feat(ui) - stacks ui e2e tests (@andyluak)
  • 51a6a3774c8e3d7df9973b0bc51d32c61092364e: feat(ui) - unsaved changes dialog (@andyluak)
  • c8121368f739b2279f869d5b312203cb6a6e46d7: feat(ui) - use constants for control plane custers (@andyluak)
  • 670a530c3df38c9f9be7a4df23134e0500ce9c8f: feat(ui) refine stack P0 tests (@andyluak)
  • 795d43a8bf15aff939951d1d1e06f16a2a229c86: feat(ui): UI: An unknown field under destination is reported as a destin (@andyluak)
  • eb8d9a186f116c4971dc6b0eacb55201fa9094d5: feat(ui): UI: Tenant cluster Stacks tab has no pagination and sorts alph (@andyluak)
  • bf18bcbda77d171f0cd832d5d1846ee99287497c: feat(ui): add NICo node provider UI (@janekbaraniewski)
  • 7caab706669c1af0f666d9db8420c6c189167cfc: feat(ui): add NICo tenant opt-in and onboarding status to tenants (@andyluak)
  • 20e0b40f6901934bb57aede298b93d0acf46d55a: feat(ui): add OS Storage connectors for image upload buckets (@andyluak)
  • 5c56553083bf4434b30aab8a52fcfab604b3d112: feat(ui): add a YAML Definition view to the OS image store connector form (@andyluak)
  • 1d83612fd1b6e41a2c7c28a63c55e8c1320aa3e2: feat(ui): add a reveal toggle to connector secret fields (@andyluak)
  • a7f4442df5634c574fa0116e760f840584cd9065: feat(ui): add an observability connector section to the tenant cluster form (@andyluak)
  • 84bd4509b37a2ce21eb2140e5515cc29ea69ebb9: feat(ui): add certified badge to os images (@andyluak)
  • ae6a32d71a16f4f05bd7a9f22dae76269a93e28e: feat(ui): add labels section to OS image form (@andyluak)
  • a6d9a8d903486cd5892b5d02457d6982cc31ce54: feat(ui): add network environment selector (@andyluak)
  • 582e4bcaac90624263b394a14a6acf37ff506d6f: feat(ui): add project quota unit pickers (@andyluak)
  • 53bc6eed82c1202315c1a6e8add30e3c3f30bfb5: feat(ui): check the bucket CORS rule for OS Image Store connectors (@andyluak)
  • 269721a7b0469626b9717753403659ffebe07ee7: feat(ui): duplicate stack templates (@andyluak)
  • a193fd0e9786a4053607f400cd2caad93fa8c18c: feat(ui): filter machines for batch assignment (#8172) (@andyluak)
  • 976c2330c07451f9ade14a309b184be965fd2b46: feat(ui): group node provider types into bare metal and other providers (@andyluak)
  • 7942d4034dc865b949a15d641acee9a95c2b1f4a: feat(ui): group project pickers by tenant (@andyluak)
  • 40f85e8a9c02d5e6884d9352ebd5ffc25c0e87e9: feat(ui): group provisioning projects by tenant (@andyluak)
  • 8216539fac7b3dfd9d46db74e31e6ba089574c7a: feat(ui): improve VPN table sorting, action label, and key creation (@andyluak)
  • 5ac01bdc37263103464d8f82043715ed8b9b6c78: feat(ui): improve nodes section in tenant cluster creation (@andyluak)
  • 4c981355b3f214908c5ee738d29d1ee2abf9ddf5: feat(ui): keep OS image file upload selectable without an image store (@andyluak)
  • 7c43cfa11b76bed56a43ac291bf6c382421815d4: feat(ui): move tenants to platform navigation (@andyluak)
  • 51291dd15b24920c49fc6d511a90a688845cb952: feat(ui): pr review (@andyluak)
  • 81749173d014ff7a49f9305ff786128b3527b492: feat(ui): pr review (@andyluak)
  • 630fa583849ef2180645b1961b68e99db51f66fe: feat(ui): reshape the project instances table (@andyluak)
  • 0d572c5715a400d104004984bda2480f47a7945c: feat(ui): show machine power status inline with the machine name (@andyluak)
  • aebb0044cbb721a94197f8e41161f45456c9394d: feat(ui): show tenant names in user and team pickers (@andyluak)
  • f760c528c8b8f92b58c060caa381a7c06dcefb05: feat(ui): show the Metal3 machine pool as radios and chips (@andyluak)
  • e9d12f82d51f331e30d3899356db824170fbea5c: feat(ui): show the compute resource each instance actually uses (@andyluak)
  • a5a400a87b51882e9491bd48e0e71aeea7f8c1ff: feat(ui): show the cube icon for instances in the sidebar (@andyluak)
  • 120e3212bd42de9c93b5eba7472144131d55d3cd: feat(ui): stacks (@andyluak)
  • 8ac325f2b52a8e181e87f7b528c8be9c74ec82f4: feat(ui): upload OS images to an image store or add them from a URL (@andyluak)
  • 57c7e95fc7a46948edd29293eff5206213ebf91b: feat(vpn): show the serving platform pod in vpn diagnostics (#8620) (@matskiv)
  • 672804cb0d5841f4bf9c499dd97168c38d721cae: feat: Add CIDR column and refactor network environments (@PRTTMPRPHT)
  • ba243165287c3964a43e4e171046ec77638b4e21: feat: Add alert in template marketplace for operators viewing tenant projects (@PRTTMPRPHT)
  • 8599ea820d237b0e763c53f2fbd5253ca94c15ee: feat: Add batch assignment of machines (@PRTTMPRPHT)
  • d53e0ff4de88db056370be0020286ecaec2282ed: feat: Add capacity type selection to KubeVirt node types in the node provider form (@PRTTMPRPHT)
  • af514896df6fbc8fae431835bc349e8fe4ba92af: feat: Add flow to provision machines for virtual machines (@PRTTMPRPHT)
  • f78bebb3ca167d385e7f8445b34051dd0a559a78: feat: Add invite dialog for tenant admin (@PRTTMPRPHT)
  • 28414855f4a6839ff7f716f056f928db4787d80a: feat: Add missing parts of the provision for VMs flow (@PRTTMPRPHT)
  • 3dda7ae30221af8900cebae0cb79af366b82bf01: feat: Add new VM control plane pages (@PRTTMPRPHT)
  • d2f8300ffd1534e8e83dad21a53ccfa942b61251: feat: Add new bare metal machines page (@PRTTMPRPHT)
  • dba3036b9b9765b9d51830899739eaa4cd78ea60: feat: Add object access section to tenant form (@PRTTMPRPHT)
  • d00610f38981ad8b8a9715751b64d953340ee632: feat: Add proper operator detection and skipImpersonation flag (@PRTTMPRPHT)
  • e6bdeb686d2ab09ace19e21f717547011f627b1f: feat: Add screen-reader label to enabled switch in tenant form (@PRTTMPRPHT)
  • 321adde4899372f66fc043c6d89b7a5f7244727f: feat: Add switch to mark OS image as certified and fix positioning of badge (@PRTTMPRPHT)
  • 6f27693761bcae23fc8d0658ed0c4700d9c7bc17: feat: Add tenancy support to machines page (@PRTTMPRPHT)
  • 2819388b1ff9ce81a4609d2ea973aa12e25d8e86: feat: Add tenant name prefixing to global entities (@PRTTMPRPHT)
  • 36634cd54250091ddd0f02b64ec12bc9b757ef35: feat: Add validation to object access section in tenant form (@PRTTMPRPHT)
  • ae01620b2e41251d9ce8994107d00301a7d9fa7e: feat: Add warning when selecting all control plane clusters in tenant form (@PRTTMPRPHT)
  • 4a968ace32fff029d1cb6d90742f28fd6e092014: feat: Align machine allocation policy controls (@PRTTMPRPHT)
  • 4f822e35dbc463a3a0c5088f86cb53d9cee89392: feat: Bind instance types section to new node claim spec (@PRTTMPRPHT)
  • 23bef0e97f76bed944d0fe43b23377ecfb3b0e4c: feat: Change background color of impersonation banner (@PRTTMPRPHT)
  • bf9d93f57d3c031f0f3fd55fdbee9d27032972f8: feat: Change database connectors to use new connectors API (@PRTTMPRPHT)
  • a07d43b52158ca96045badab9b3ed74edd79c2b3: feat: Change empty state for virtual cluster table (@PRTTMPRPHT)
  • 02893b48f33039976c832a47d4daecde583e7e90: feat: Change how machines are matched to KubeVirt node providers (@PRTTMPRPHT)
  • 5611887059eee3f46d7a0b455d32104dc4b0f4fb: feat: Change naming of platform assignment from "platform tenant" to "platform owned" (@PRTTMPRPHT)
  • 532ec66ce47197f72da6da9d83bc8035ad1c6add: feat: Change nav bar gating for machines so everyone who can list machines can see it (@PRTTMPRPHT)
  • ee632607fc85cabdbaf6e2df02aeba8f5dd023d6: feat: Fix impersonation banner position, text and style (@PRTTMPRPHT)
  • ef8a956b16ab3387230cf92fb82d2a534402f62a: feat: Hide machine spec during provision for VMs flow (@PRTTMPRPHT)
  • b1a0d02907ca6ba0481807a846daeabfe1fad6f8: feat: Improve empty states for machines and tenants views (@PRTTMPRPHT)
  • a7a692ff36eff78418f0467e8ec16a16eedf22a1: feat: Make invite user dialog use tenant hostname (@PRTTMPRPHT)
  • 89b33ddce4958db36453d36bbaa965845be2fac4: feat: Make observability connectors form use the new connectors API (@PRTTMPRPHT)
  • 5fcb1033b1e03fbdc64d76ff9fe2c49c1a6a7b98: feat: Migrate ArgoCD connector form to new connectors API (@PRTTMPRPHT)
  • 63a10d9a77899ec2ee67d930d4d7752cc0d83797: feat: Move KubeVirt debug views under VM control plane details (@PRTTMPRPHT)
  • 5e79326e82d46a61c53fd93b78881eb202fb0f64: feat: NICo (#7939) (@janekbaraniewski)
  • 8ebf1f98ffb353f4dda3e076db37451dec04b475: feat: Reenable advanced machine settings for provision for VMs flow (@PRTTMPRPHT)
  • 411791948ef54f8aa6ab1a5a50c09d32b699a051: feat: Refactor backing store detection logic (@PRTTMPRPHT)
  • 6c5cc894f8be5f091909cd560595a05c483786b0: feat: Rename device capabilities to machine capabilities (#7928) (@PRTTMPRPHT)
  • aa70535d5c3c8c85b04bfdd03d535db841f05694: feat: add insecure connection warning (#8366) (@FabianKramm)
  • 9a3489230aa7056e901f0f3df8b2f79bc471a95d: feat: add ironic view under Metal3 (#8510) (@FabianKramm)
  • e4e2a7174666d778942489f5263b222454f52553: feat: add machine types (#7873) (@mfranczy)
  • 66295efd7f71a34c706537864c055571333d2656: feat: add netbox metal3 integration (#8170) (@FabianKramm)
  • b101faf24c81f0522d33693bfc4bf6ca276bdb93: feat: admin user recovery (#8177) (@neogopher)
  • fabfc3e0dcd9fb5f3d2ee597e3e00e9f8fba357c: feat: better metal3 node display and overview (#8566) (@FabianKramm)
  • d952d889ac1b6a689dfd02c1d419c3b6f25288b0: feat: import the NVIDIA Dynamo certified stack (#8368) (@FabianKramm)
  • 5574a8e34539ca0e6680a4683eeb959810c4a9d2: feat: machine ref for nic (#7993) (@mfranczy)
  • 6eefcbba3fe5c8a984494afd7fb2392654c9e889: feat: machine reference (#7931) (@mfranczy)
  • 4e29786e29e1fd2b5b582fccc04916c655bd7286: feat: machines sync (#7892) (@mfranczy)
  • 57405c3d394748105f9fe9215741c2d54914b86c: feat: nico machines lister (#7969) (@mfranczy)
  • 9b9b04794c1d607fd942ce973531b3864a607d27: feat: node type shared / assigned (#8395) (@FabianKramm)
  • 7dd74e77690cc04b0c9cba9de6562b3f628785a3: feat: tenant node provider (#8208) (@FabianKramm)
  • a9c6d4cf4dc2f363661232909700aae3b3df2d47: fix(agent): reload renewed webhook certificates without restart (#7874) (@johannesfrey)
  • c1ba280922b737c337a334c0305333ddff21d344: fix(agent): report the cause when vcluster proxying fails (#7697) (@Piotr1215)
  • dc7692bc4b834e9ecfea12305d8aaa50c5bf3e79: fix(apiserver): scope the project subresources to the project's tenant (#8027) (@lizardruss)
  • 4c70dc44e2b95b0901ad86b171d1507fd3adfde5: fix(apiserver): stop updates from restoring fields the request cleared (#8464) (@johannesfrey)
  • d852741583672a234fb2ab2d8b531c473fe35b0d: fix(app-instance): Unblock the AppInstance controller from removing finalizers if it errors with the log secret (@zerbitx)
  • 8b3498d8255c6da7da31fccde39df858d3aed552: fix(appinstance): reserve releases and retain deployed namespaces (@zerbitx)
  • a5be7fa3a87ab286a0ebc1c75755ba870bb07745: fix(apps): wait for an app's jobs before reporting success (#7996) (@flomedja)
  • 2f3c48c73e6c943bf5510bc43a249dadf9bcee5f: fix(argocd): wait for the tenant cluster before registering it with Argo CD (#8403) (@flomedja)
  • 85f960df857bae1dbbcc962a0e38e9f5f6d0d259: fix(audit): redact datastore endpoint credentials from audit logs (#7999) (@neogopher)
  • 622cc1c57c0ba2b56645fc3152f47116ecdb840c: fix(authorizer): answer the tenant boundary as the subject (#8458) (@lizardruss)
  • 27b6732d83ecfb1cce83809137e3ec422a215bc9: fix(autoscaling): drop the metal3 host from a claim whose update failed (#8387) (@cbalan)
  • 01e0fc744e6f170e04c86de7ec77c5cc368be227: fix(autoscaling): keep instance and nodeEnvironment vars for v0.1 terraform templates (@roehrijn)
  • a135cc7ce5c642faae0962b0dfaad377a4e91674: fix(autoscaling): list node claims only for reserved KubeVirt node types (#8442) (@cbalan)
  • 51cef53214ded140aceee163dbf1856467c360f1: fix(autoscaling): name a NICo node's VPN peer after its claim (#8410) (@cbalan)
  • 33e18b6fd2777897d5a1d1d5c11d8b84de7f8105: fix(autoscaling): reconcile allowOverride on adopted nico operating systems (#8221) (@roehrijn)
  • 34558c44a3f1d90e7c978f0cebcf9706fd1c23dc: fix(autoscaling): wait for multus before deploying the dhcp proxy (@roehrijn)
  • 2c5aa35ea9a6714079390c82ae5c1b21b8e0675e: fix(ci): keep the e2e aws session name within the sts constraints (@roehrijn)
  • 175e6e60a40cb7bfa0e8ee10addce404f50642d6: fix(ci): preserve first-push check visibility (#8063) (@vcauesantos)
  • 203c41a122e50087a5f663509b76de6612adf586: fix(ci): stop devspace plugin sync from blocking releases (#8655) (@sydorovdmytro)
  • 8f7e7f88451414690023e19468d8abc7ae45762a: fix(ci): use the current branch cleanup contract (#8343) (@Piotr1215)
  • 1952905473092847f9ac873cbe51fcf027fb00a0: fix(connectors): address OS-image review feedback (@janekbaraniewski)
  • 05d821909c6813b25e2bda052bfd889f07315757: fix(connectors): correct OS-image validation test (@janekbaraniewski)
  • 514b8f8ebded3470f88767ad7ac2e92127b76b5e: fix(connectors): harden OS image store compatibility and validation (@janekbaraniewski)
  • 6b08b11a6ad77c3e6dd03e5eedeb56affa99fce9: fix(connectors): keep credentials out of default audit logs (#8267) (@nprokopic)
  • 9f7dc46f43a568f8385406ace0a543f63cbafb83: fix(connectors): let non-admins list connectors with a redacted view (#8486) (@johannesfrey)
  • 6d71ea18cf23c6b6ca7a090a7847d1973c899766: fix(deps): update github.com/netrisai/netriswebapi digest to 7b335ae (#7799) (@renovate[bot])
  • 87211bae1ca9b4b0c281f932cee6d35588a079b4: fix(deps): update golang.org/x/exp digest to e88cd73 (#8072) (@renovate[bot])
  • d64987ecc28b3761fea971d3d0c8ee905005cbea: fix(e2e): allow commands on fork pull requests (#8432) (@vcauesantos)
  • 05d19441ecc9674f74d0572391686c9061f736aa: fix(e2e): attach cloud-init log only when node readiness times out (#8480) (@roehrijn)
  • d963028748de68afa1d417f8b653eab3dc865aa1: fix(e2e): detect a missing nico checkout as lease staleness too (@roehrijn)
  • 0933f0d018876fe03a9259a91ec34eb8fff4eba7: fix(e2e): fail fast in prepareImages when a takeover already lost the lease (@roehrijn)
  • 2d078709edf8101eaf2a52cbf80a6f6759ac9e5d: fix(e2e): give each nico e2e spec a unique tenant org (@roehrijn)
  • 48ff65423caa2943416f65e67cb3b0a433773467: fix(e2e): give the control-plane lane a site-worker, skip the baseline VCI where unused (@roehrijn)
  • 0359b057aff99d9c4a49d2e4566922b828f0802e: fix(e2e): harden the nico image-prepare lease against staleness and silent errors (@roehrijn)
  • 105c4e7047dbed54ca44291b49052096f2437906: fix(e2e): merge postgres resource requests instead of replacing the default (@roehrijn)
  • 7aa3f5501c2f04b89fec8b2a23a07407278f729c: fix(e2e): re-add a local lock around the nico checkout's critical section (@roehrijn)
  • 7d106f1b9fd90a51003650edb1e8f3cd0a8d6fc7: fix(e2e): read the NetworkEnvironment readiness from the host cluster (#8245) (@anvesh-loft)
  • 6ada039e83d88cd27d799c56e1ac1773942b8081: fix(e2e): recover any panic in the nico instance bridge's DB ops (@roehrijn)
  • 605acabc58490935be39bcc073555041e366af9a: fix(e2e): retry lease acquisition when a waiter's holder dies silently (@roehrijn)
  • f3d29a0c1cc0f038a1f49cca419b0dac9bcc1cc4: fix(e2e): reuse the persistent kind-platform cluster for e2e runs (#8136) (@seanschneeweiss)
  • 04f804f53d7e8ffde99d25fc624e9aaf2d673ce9: fix(e2e): route klog and controller-runtime logs to ginkgowriter (@roehrijn)
  • aad9e410a61ac0cecb07ec19859431f69f4344da: fix(e2e): skip the metal3 license token when the platform image uses the fake license (#8625) (@roehrijn)
  • e26a52485e34e448b7297cc0c98fd0441c9aaf76: fix(e2e): stop aborting VCI wait on transient Failed; retry VCI patch on conflict (#8211) (@sowmyav27)
  • 3f60298b2237de5961a301c08b636df4f6d91f43: fix(e2e): stop asserting a specific provider name in the org-reservation rejection (#8196) (@roehrijn)
  • 336a8741199b248a1de3bc47c4ece86fd09a4942: fix(e2e): stop flaking Least Privilege Mode VCI readiness waits (@roehrijn)
  • 65a7558096890a35b9f65c07162f18631131ee61: fix(e2e): stop leaking EKS IAM roles created by the cluster provider (#7886) (@adriankabala)
  • 10a1334a7b5cc21c11889a4b6eb82517c8ec15a2: fix(e2e): stop printing the dex client secret to stdout (@roehrijn)
  • 7171f905a9de1363b43ca77ed94dbe1172473793: fix(e2e): write s3 object delete warnings to ginkgowriter (@roehrijn)
  • 422d4f21bfffab45724102840502b0f35c132d41: fix(hack): make go api regeneration work from a clean checkout (#7936) (@seanschneeweiss)
  • 0cb474a5bc99f1cb64843f2514f04b7f3852e45e: fix(hack): make swagger generation fail loudly instead of corrupting the spec (#8091) (@r0bnet)
  • 18b270cea6556ae71a1aede9c098d8cc05153da3: fix(license): enforce limits in the offline license cache (#8096) (@johannesfrey)
  • 0eb75053f073d179d0ad3621e19bd71ef12afe28: fix(machine): refuse tenant reassignment of a claimed machine (#8400) (@jjaferson)
  • 37bb83540328a2f93e683c3ca8d135569a4e9ca1: fix(metal3): report the provisioned ip in machine status (#8525) (@roehrijn)
  • 66b5a2bbe698e4661871718e7d518ce7a3a5b73a: fix(networkenvironment): allow editing the display name after assignment (#8321) (@rlmcpherson)
  • f3258f5d665067a59380f02a7751a11a19dcdee8: fix(networkenvironment): count every bound node claim in the deletion in-use check (#8301) (@rlmcpherson)
  • 7d8aeeabffd12910f47d471eff82a953d5ad9d58: fix(networkenvironment): name the node claims that block deletion (#8333) (@rlmcpherson)
  • fa42229429e38a8ff719078d13485c090991fc03: fix(networkenvironment): refuse a tenant's create (#8350) (@rlmcpherson)
  • 5956247deb17d7a5d70dbd2009cf91f9a917488a: fix(nico): address follow-up review findings from tenant quota change (#8459) (@roehrijn)
  • c9e437eac934e03064d208b2c8733cdebb1ec8a6: fix(nico): classify retryable errors by inclusion (@roehrijn)
  • 38d64651920f3880627328d129da18754ea49f46: fix(nico): delete a vpc's subnets before deleting the vpc (@roehrijn)
  • fc8fd9a9e1da68b77486b30afdc7561eca435d01: fix(nico): delete materialized os-image catalog entries on osimage deletion (#8220) (@roehrijn)
  • 599b5edfbf0bf164f53a04c766e3a995b42cb425: fix(nico): derive the tenant node provider from assigned network environments (@roehrijn)
  • ff9581c46e5be316feed238448c1902fb4a47a8d: fix(nico): keep node-type claims off machines assigned to other tenants (#8392) (@roehrijn)
  • 479371dd9ef7ebbff3ef5d4513b6051190c3a80f: fix(nico): make network environment tenant assignment immutable (#8100) (@janekbaraniewski)
  • 53f32e67bded5a468d4012d8dd2c078228fd720e: fix(nico): onboard tenants into nico automatically, using the tenant name as org (@roehrijn)
  • 72e4709fff07e398510357807476b3ae4a56fe58: fix(nico): only an instance makes a machine Provisioned (#7995) (@mfranczy)
  • b3a5a97411271f89ad4ef63a326e5abdc98f1146: fix(nico): read the capability from the account, not from a list entry (@mfranczy)
  • 377d1d9b4f2bdafd6d0f8c6b3fbcfc205f23aad9: fix(nico): refuse tenant claims naming an unreadable network environment (@roehrijn)
  • 440cc977d56d0b7e58f5c721fa4bca105d207e2d: fix(nico): reject tenant and provider org collisions (@janekbaraniewski)
  • 6e010d94fd8ce9a53afed381aa67a46a15899195: fix(nico): report machine power state from host bmc health alerts (#8539) (@roehrijn)
  • 9db4ed4d69110f002c06c184e7ad475c947c9470: fix(nico): scope the nicotenant reconcile through the tenancy client (#8470) (@roehrijn)
  • eca0454ad23b73686cc0c444286ff25b490501f9: fix(nico): stop tenant quotas from reserving nico machines (#8443) (@roehrijn)
  • 6f01b350734058687d8cee460ffea6b588e9843f: fix(nico): the capability grant must not gate onboarding (@mfranczy)
  • 13fafe2dee85f22fc5b948ca2056153e8473e152: fix(nico): wake a tenant when the scope label of a revoked by-name grant is swept (@roehrijn)
  • da3adcfa2d20160604b61fb8283130e425d3c407: fix(nodeclaim): enforce tenant node type quota on the platform (#8404) (@roehrijn)
  • fcf3e98fac72e012fb5de0ba12007af737bb5e44: fix(nodeclaim): fail a claim that gets no machine after a provisioning wait timeout (#8565) (@roehrijn)
  • d427ec9bdc2932ba76599e346ebf820d68775cd7: fix(nodeclaim): hold concurrent node claims to the tenant node type quota (#8558) (@roehrijn)
  • c4d655abf387c8afa94c9a16d6aeafb8d466e25e: fix(nodeclaim): let a claim an earlier build parked on a terminating environment recover (#8381) (@rlmcpherson)
  • f263eeafa049ac0bd88332e7728ec017003d2b25: fix(nodeclaim): say what a claim waiting for a network environment is missing (#8382) (@rlmcpherson)
  • 42a9cc67c00a501408d30e2e8100b1735c01dcc0: fix(nodeclaim): show the new IP of a VM that was stopped and started (#8466) (@cbalan)
  • 0b6c53b5979f5b4c566758868fb76bfbdc98f384: fix(nodeprovider): take every node claim down with the provider, before its environments (#8575) (@rlmcpherson)
  • ba958579ef9f1e20f9422a1dc86a6d386c070dad: fix(osimage): answer 404 for blob paths instead of falling through to the ui (@r0bnet)
  • 4396f8ba8c077c9b5a879df4eb716775eebda21a: fix(osimage): answer head on the blob endpoint so ironic accepts it (#8509) (@r0bnet)
  • 2d9d440a19a3d09d7edea23593180422c332a325: fix(osimage): answer image store setup errors with 400 and a fix hint (#8649) (@r0bnet)
  • 558f8425114decaea1e537ac222b0564ee37285d: fix(osimage): check spec.access before handing out upload targets (@r0bnet)
  • 19f1df6e0cf496c24728ed9bd1967511a37001cc: fix(osimage): clear the initiate record when an image settles ready (@r0bnet)
  • 9a632c7e2d0152498921821f1fa8f577d0c18f89: fix(osimage): clear the session record when an object is rejected (@r0bnet)
  • bea8c308f8393a9d692d5a084d3f6eae4f4dc486: fix(osimage): do not expire an upload that completed at its deadline (@r0bnet)
  • 3174087e46aa6a8e831fa54074df6b2acf0a9eed: fix(osimage): fail a part listing whose marker never advances (@r0bnet)
  • 9ab2e45cd58310cacc17d23c77e6c60721743540: fix(osimage): guard every way an upload session can vanish (@r0bnet)
  • 3d5ed4f5044007bdc58d7699b830b469829a944c: fix(osimage): keep declared-size on ready and clear stale bytes on failure (@r0bnet)
  • c8efe56117efa4368a2b663bc5a82542d248ca40: fix(osimage): keep the upload session annotations server-owned (@r0bnet)
  • 2bb26f888f9cf402adb19504774b2e7fcacad897: fix(osimage): let a failed image be uploaded again (@r0bnet)
  • be75e4ff08455bd006a5f9dc4c9c80eb52d36bed: fix(osimage): let the controller own status alone and write it once (#8557) (@r0bnet)
  • e1591b7763997add4f6b694e954031cef02ca4a0: fix(osimage): let the object decide whether an upload completed (@r0bnet)
  • 561e082355ce5e6a5a8230dd5b9d07ad2966f832: fix(osimage): move the conditions assertion out of the api module (@r0bnet)
  • 32149c427e6ae071561f04c538e0d9de88da61d5: fix(osimage): re-derive the whole expiry decision, not one field of it (@r0bnet)
  • ee47810c6dca9ee91b71259cb7591f5373a7c998: fix(osimage): recover a finalize whose completion was never recorded (@r0bnet)
  • 7bdd9dbcd264dffcbfa003ac285f5a5c3c3a9c7c: fix(osimage): refuse an unowned upload before opening a session (@r0bnet)
  • 79458e45b14ed00a04095081b646a6c04a06d40a: fix(osimage): refuse dry-run on the upload subresource (@r0bnet)
  • e8b3fa8cb826cbba894a757ea3d0b87a50b8251a: fix(osimage): serve the blob endpoint at a path ending in the image uid (@r0bnet)
  • 156bf996edc002c07da1c38798dfed5bcdcc4f50: fix(osimage): spell the upload annotation last-initiated-at (@r0bnet)
  • 574a4ca4cafcfe9fa3d79405d9ae8be79597ce89: fix(release): allow e2e checks permission (#8212) (@vcauesantos)
  • 2befa3ecff9a9bb42927dc57fea93018f09387ec: fix(renovate): match release branches of any major (#8490) (@sydorovdmytro)
  • 9f5b4dc955232b88ee06423a6813d2941094418d: fix(security): check chart secrets when saving an App or StackTemplate (#8537) (@flomedja)
  • 04437e5cb00e881f583726feeac13bc188a72342: fix(sleepmode): set wake service port for Istio virtual service (@zerbitx)
  • ac504e1ee3970978f876369169ea32178aaed050: fix(sshkeys): let non-admin users manage their own ssh keys (@roehrijn)
  • 62d2207c483243075d2ce1d807b2fb37b0cc4171: fix(stack): add get verb to stacktemplates in admin core roles (#7998) (@flomedja)
  • 4e2e373204dc9ff7b5bf29ef950e3dc78753c25b: fix(stack): add stacktemplates to management and core roles (#7968) (@flomedja)
  • bb8a34e717849ac7b33b3d0fcbd771b6362c34ed: fix(stack): reject inline app release name changes (@zerbitx)
  • 34eb645811ff227b4e869963cff1d6d67c0a9568: fix(stack): reject jsonPaths without braces (#7980) (@zerbitx)
  • f414263a353342c0cf0d403c8225c0a486e6f722: fix(stack): report inline app release namespace conflicts (@zerbitx)
  • f70d1cd040bf65110dcd5fca45dff49941b589b3: fix(stack): use platform.vcluster.com/stack-retry for ui (#7973) (@flomedja)
  • cc6f717a99d44558fd77a14a0eed14a3ccac0026: fix(stacks): fix stack validation issues and centralize validation functions (#7934) (@flomedja)
  • 8cd61c2d8062da47bdac2ea22b7b503670bb1f22: fix(stacks): only accept Retain or Prune as a stack's prune policy (#7960) (@flomedja)
  • e1f6a08dcdd05724bfd5e758733aa1d25253610f: fix(stacks): run the certified stack ingress check with the Platform image (#8055) (@flomedja)
  • 7f54c8082e79be3590c63d06c23c0ba6d22da09d: fix(stacks): say why a stack waits when its outputs name is taken (#8285) (@flomedja)
  • ef3a07024148bb1c7b7bde276a5b5e0d16ca1866: fix(stacks): stop the stack name from making helm release names too long (#8018) (@flomedja)
  • 3c51212baea98c9e246783cc4f7678186635b57b: fix(stacks): validate StackTemplate references (@zerbitx)
  • c71fd840b3065f629be0366573384581ba277fbe: fix(swaggerapi): give the fake management client a scheme (@andyluak)
  • 204ee3c58d42a7d14ebce9ddf27b539d0445613e: fix(tailscale): bound and fail over network peer dials (#8127) (@roehrijn)
  • cb9aae0ca53e91a4785d1cb75672eb2e8868ff86: fix(tailscale): mesh DERP replicas on pod networks inside 100.64.0.0/10 (#8613) (@mfranczy)
  • 5a69380d700e7920c29a15106c4c9d5064c68aea: fix(tailscale): reap stale network peers left online by lost cleanup (#7618) (@rlmcpherson)
  • a5161d6da1717d0104f54d5ec85baccd4fd5ad69: fix(templates): preserve RE2 validation behavior (@zerbitx)
  • 69f337be35fe39e8e267ba40bc7230d33af4d973: fix(templates): support lookahead regex (@zerbitx)
  • bda81c019a2609329107b5b28a30c6a280950ebf: fix(tenancy): answer an unsatisfiable selector without a request (#8134) (@lizardruss)
  • 6a1c50b2c28a94c33e2875c2f6c42484e144dad5: fix(tenancy): owe the initial-events bookmark only where the apiserver does (#8258) (@lizardruss)
  • 2a3581635da5b38cbd055fe8b7c9e50b8fd156ac: fix(tenancy): refuse exclusive holder label on users and teams (#8292) (@seanschneeweiss)
  • d81fac3a147c23ca2b214c64217132b723318429: fix(tenant): bound tenant writes to the tenant's own instances (#8065) (@lizardruss)
  • 6eec026a63456a61f8c710b606649fa7237998fb: fix(tenant): grant tenant admin wildcard access (#8000) (@seanschneeweiss)
  • 1bcd1fbe41e3d74ccb57a2ca88d623ddb66db215: fix(tenant): reject missing or non-nico node provider at tenant admission (@roehrijn)
  • 3785d54e063936def6b929597cf5022efdf9cb71: fix(tenant): reserve the tenants/config endpoint for operators (#8003) (@lizardruss)
  • 27436d8f27e783a262282fafbd624a150db62498: fix(ui) correct stack fixture readiness (@andyluak)
  • 7bb601775b0a145b26043a4f85cf1c5d3be5c459: fix(ui) stabilize stack P0 fixtures (@andyluak)
  • 259626bbbb5c4ce1318d30cba4e9a4a79abbfe35: fix(ui): address Stack E2E review feedback (@andyluak)
  • 90da7720090df8395e3e96a57d1b2dcf6c4adf29: fix(ui): address demo issues (@andyluak)
  • 29ace4db7f022c07589451e5e2033940f14b7d83: fix(ui): address pr review (@andyluak)
  • 764d3eb5478346b9c1c5ba0007d5ae24ec362e0d: fix(ui): address pr review (@andyluak)
  • 06aa8406bce45d2a52b876430a74a2275dba9b74: fix(ui): address review comments (@andyluak)
  • a644f014d4d9ca6d34fddc155823bb10efe71e41: fix(ui): align Metal3 available status styling (#8187) (@andyluak)
  • 0ed4d6acfcbe13792308d0f20985feebe772f75f: fix(ui): align the sidebar with the tenancy permissions matrix (@andyluak)
  • b3e430f971bad6823d6331aeed8d053e333bf1ab: fix(ui): allow resuming OS image uploads and swallow drops without an image store (@andyluak)
  • 12422d8786028f835efb66c5eac762d3577eff4a: fix(ui): apply the updated sidebar matrix and review feedback (@andyluak)
  • 5895463b81cbe68e7bcecd3d0d1109a894256a38: fix(ui): collapse the inspect resources nav section on trigger click (@andyluak)
  • f3dcbcb5dcb6596d31180da9c036e8898968e231: fix(ui): constrain duplicated stack names (@andyluak)
  • a065cf21307a27aa97f2ea74392c7dcfb1849dfa: fix(ui): correct config secret blurring (@andyluak)
  • 032d3b08f0f49b9c5270e8488a8e596c5ffcf4d9: fix(ui): create ssh keys with generateName and lock the public key on edit (@andyluak)
  • b6243437bf2756f9a33c7ee54f41b4fb170bc7be: fix(ui): drop enterprise badge from custom resources sync and external icon from forgot password (@andyluak)
  • 01d4ce5b63b6566d6c4f4da007ea48926ee8728b: fix(ui): filter machines within tenant groups (@andyluak)
  • eb8fb4bee15f26b0fb34f4396af0986396adf129: fix(ui): fix stack template regressions (@andyluak)
  • e19d275e5f5661750876823b502b97d7bf45f6d7: fix(ui): generate node join token on button click (@andyluak)
  • 2e6841f42e6edac6feb97f0354e111f1779d4802: fix(ui): hide connect for inactive instances (@andyluak)
  • 0b1839d6a15938147df085baba98bcfb053a9cb5: fix(ui): hide network environment create for tenants and cost control from the sidebar (@andyluak)
  • 34395670b2b0e615a7b7b7117ac79c9e232872ff: fix(ui): hide stacks without list permission (@andyluak)
  • a90fdb7423ce45b0ff760c383f0a4f696f99a885: fix(ui): hide the Stacks section for vCluster versions without deploy.stacks (@andyluak)
  • 79061c60d61ae8e4e53a9d0dba9a9c073b48f184: fix(ui): hide the insecure connection warning on localhost (@andyluak)
  • ddff021d226385d7aa35aee935f75cf180fdc7b1: fix(ui): improve network environment guidance (@andyluak)
  • 3f90b2c6ecb5de3926815a56b18458f066fac6d2: fix(ui): improve stack task presentation (@andyluak)
  • 25fd21f4e50d5ccc83c01b1d4ff2f007b9cbc28a: fix(ui): keep a stack's applications out of reach of the delete actions (@andyluak)
  • ac055ab95ee9db5ef260db4de2c26af2e6a6cf6b: fix(ui): keep certified badge visible (@andyluak)
  • 27e31f6dcd35044ac814c8af8b24884f72af8bf1: fix(ui): keep the saved compute resources on the instance config tab (@andyluak)
  • 9a8ae8146c93e670b112d2d5788c1272dd5a9320: fix(ui): limit stack template duplication (@andyluak)
  • fceeef80b1a22715b49741ccda50e1521d9d5834: fix(ui): list SSH keys without an owner on the SSH Keys page (@andyluak)
  • f1f8b4245a3764debee6031a47e05091eb7c5804: fix(ui): lock a stack's destination to the page its sheet was opened from (@andyluak)
  • 2e1d506016e52d849b285d5a14b285f514bfd4f2: fix(ui): lock network environment properties on update (@andyluak)
  • 8d48b4a3dcab5c85e253e3603b96e77262ed698f: fix(ui): machines and bare metal table layout issues (@andyluak)
  • 41137716693aa5c89632f704eb038dc5fbe2efed: fix(ui): make SSH keys optional for new instances (@andyluak)
  • 1f6f2098647dc860c016370e7b5b71c1aa8499d8: fix(ui): make the sidebar follow the custom sidebar color (@andyluak)
  • 2628e2dff266b95c8c83f30b11c741b6612071f2: fix(ui): mask stack password parameters in the computed configuration (@andyluak)
  • f59e3cd822524e86602e7876891b654acb6c8d5a: fix(ui): match Run:ai custom link icon by label, not URL (@andyluak)
  • 6143e3c386605c8779711b155913068b2167fda6: fix(ui): name the memory unit button with its unit label (@andyluak)
  • 03f85e2cc1c2eb536a2f09daab1be7a7e0b07dc7: fix(ui): normalize NICo provider form values (@janekbaraniewski)
  • 79c4098a63fb18b34919e07c4af29102a3efe9af: fix(ui): only offer machines no node claim holds (@andyluak)
  • e5ec003fb1275ca4b352d03288352fe46449de48: fix(ui): pick allowed node types by ID on the tenant form (@andyluak)
  • 93b8413609ea9b417e24e8f799b7f283c8d7cce8: fix(ui): polish sidebar (@andyluak)
  • 7057d2d156a0e1ffd3f548faee8552a9aaa7ac04: fix(ui): pre-populate template parameter defaults (@andyluak)
  • eb47f03df3a56ae3354ca39dbf16b4cf604feac6: fix(ui): preselect the only required OS image and show launch form errors (@andyluak)
  • d5d4b7cc472fb5ceea3406b258fb0fe0ab905ff0: fix(ui): preserve destination error field casing (@andyluak)
  • bd1241c48cf18dbb3f251d3dc4298050a2d29a95: fix(ui): prevent app shell from scrolling when elements are scrolled into view (@andyluak)
  • ea225fc80aa4ebcc85aab45a925a3e6a76a05bed: fix(ui): prevent network environment reassignment (@andyluak)
  • 2767b4ad4d5ca2f1b8137e0f4f000876f733839a: fix(ui): rebuild getYAMLKeyPath on the yaml syntax tree, stabilize parameterize widget (@andyluak)
  • 8ab8f6fbc33c4f1383f6cf186af08ceb7410670a: fix(ui): refresh outputs after stack edit (@andyluak)
  • 54e6a84d2c1d7ff7b3268709e994c27dd8219bed: fix(ui): remove broken auto-nodes cloud quickstarts (@janekbaraniewski)
  • 598c1dd9fa4bc15d463bf9c5bdfb0188987bd58f: fix(ui): remove duplicate node claim ID (@andyluak)
  • 93b3569323091c2d2d8c30bc86a3169e4911948e: fix(ui): remove network environment choices from tenant creation (@andyluak)
  • 803d94940c6946029032a972f1e68bb205db648c: fix(ui): remove network environment owner field and require infra provider (@andyluak)
  • 250b3f53c3c21fa9de5c9aa1e4702845d2d06c1f: fix(ui): remove platform breadcrumb bar (@andyluak)
  • 7203e2d198e24a5d65aa00647f33e92a04843b6c: fix(ui): rename "control plane host" label and distinguish Switch to Tenant trigger (@andyluak)
  • 96487ad69272bfb287206447a6bd74e5ca230ccc: fix(ui): render machine power status through a name column slot (@andyluak)
  • 3582915bf43511f0ccb1c09d741ab1d4487139aa: fix(ui): require SSH access for new instances (@andyluak)
  • ee1259ba37c6694dac1d71ee276fa66ea21af73b: fix(ui): require network environment assignment (@andyluak)
  • c865546a8353ebe9e8a011f90daa9f45187cebed: fix(ui): reset the inspect collapse state when leaving the section (@andyluak)
  • 3781c5c475c015808f0300cc5165d552e3d67a2c: fix(ui): resolve the pinned machine from spec.machineRef (@andyluak)
  • 265103b384ada73c073d3238d20d832ba4e94b9e: fix(ui): restore original Apps sidebar icon and path (@andyluak)
  • 4aa44d0f0e176d1a8b2fbb54cf41d97a1d95c82f: fix(ui): restore sidebar More section (@andyluak)
  • accae5e1abe42b2503814ef4927ddaf39c70350f: fix(ui): restrict Metal3 diagnostics to platform admins (@andyluak)
  • 34f4a155efb16da901b44b400e2d37706b52f4bb: fix(ui): run shared Stack suites serially (@andyluak)
  • e657dc6c338194b9c79fd19a049543a32e0b5900: fix(ui): safeguard stack task removal (@andyluak)
  • 40715f1b375933f28e157026581f9d4c52c9dd75: fix(ui): sanitize duplicated stack templates (@andyluak)
  • 5c91b6c5dfb8d83e77b2608dfeb458666c3cae20: fix(ui): show Apps sidebar entry when user cannot list stack templates (@andyluak)
  • 5c346ec7c97ead4d2634329fab4e5d62b29db2ac: fix(ui): show a stack task's status message before it fails (@andyluak)
  • ac2c7c351507172b5c6c9d9624e129a490ac31a3: fix(ui): show config tabs when the template editor pane is closed (@andyluak)
  • 23d98d3e0d863a2d6deba984c406df8cd09dde63: fix(ui): show full stack name on hover (@andyluak)
  • 0d11fa52b68b7a6cb3e79f5a92547f5cdeac6aa3: fix(ui): show helm expressions instead of placeholders in template forms (@andyluak)
  • b552ef5d6aa1770238db5b9adb092e1c5602e09f: fix(ui): show instance type properties in a popup on launch instance (@andyluak)
  • 9c5e9037cd86e1a10b74b99c762d598d6853ec12: fix(ui): show machine status message on error badge hover (@andyluak)
  • f7721aaad99a4c3a81591feddbfdfc7f134731ff: fix(ui): show orphaned stack apps and add stack prune policy and task timeout (@andyluak)
  • 42e0cbc2ac4411793da2c7620c79b27be7d43cc7: fix(ui): show the application name for a task with no readable source (@andyluak)
  • 3ea790bc9977a30e8bceb79ce0906250afdfe994: fix(ui): show the status reason on hover when a machine error has no message (@andyluak)
  • 36a409def1631e93b67ff47b8bbe7d39d3229856: fix(ui): show why an OS image upload failed (@andyluak)
  • 76869e9ee5890d2c0706e7ece7a214ca7ddd2a24: fix(ui): show why an instance is pending or failed in its status tooltip (@andyluak)
  • f242f88310ecf66de621515386d84ec42ff6cf1f: fix(ui): simplify platform assignment checks (@andyluak)
  • 415021560a75011fd5cb1ad01e0a1f82f5fe0a79: fix(ui): standardize create tenant buttons (@andyluak)
  • 6bf8582549e57c19b4f5828b15f6ddad6d7ec16d: fix(ui): streamline network environment defaults (@andyluak)
  • 0467dd8c9d5a507adfb1f4d8fb1fc659d929cedd: fix(ui): tell tenants to ask for an OS image store instead of connecting one (@andyluak)
  • b2a19c459130ca68a3b5e9fa887a814caf2c6492: fix(ui): update batch selection assertions (@andyluak)
  • baae5036b3e9b2ccc77eeda35deafcacafb5a679: fix(ui): update e2e expectations (@andyluak)
  • 6a5b62a7a18c7a072fc97142259170d8c95a28bd: fix(ui): update machine statuses and hide NICo power (@andyluak)
  • c2dfabd56a7cc692172282428a078953d2860460: fix(ui): use the task's timeout field in isPristineTask (#7908) (@andyluak)
  • ba1081af4709a6876676a0eba353bd89b1c110ed: fix(ui): validate node type names on the form and say platform admin (@andyluak)
  • da3404224485d4c95ac10488f6aae1c8f57821c3: fix(ui): validate the tenant YAML and put metadata before spec (@andyluak)
  • b63f0fa2b40e210d7444bc1f424ea57429a6d650: fix(ui): warn when a logo or icon URL does not load (@andyluak)
  • d7d1a7c056021247499c3a891d4ecd5e9a05aae6: fix(version): fix package version in files failing in CI : v4 to v5 (#8573) (@flomedja)
  • 37ade2be6cb03f93b5724d72c1a6ddd3818c1af8: fix(webhooks): return actual limit on overusage (@seanschneeweiss)
  • b9edaf741575ae61d5795f4c7c3aeb3b5e968706: fix: Add missing tenant column to all projects instances (@PRTTMPRPHT)
  • f90acb7c1523aec85ba44c5246d395b874dccb17: fix: Align sync template buttons (@PRTTMPRPHT)
  • 9daaa7fa9fdf3d6c748c46992aad4ab412631a53: fix: Change label of custom sidebar links option to be clearer (@PRTTMPRPHT)
  • 03a7edfb9b9ffe6bd8526adccb6615146628e9e4: fix: Fix actions placement in machines (@PRTTMPRPHT)
  • 5ae4f357ef373a561701b8051bf852307bbb4607: fix: Fix auto nodes e2e tests post k8s template removal (@PRTTMPRPHT)
  • f532996dc19f6fe97662a337fa08901f2646cd37: fix: Fix copy in tenant deletion dialog (@PRTTMPRPHT)
  • 79d41e0ef2a65ff11515289ddccf436f1d6ef25b: fix: Fix description in index.html for link previews (@PRTTMPRPHT)
  • 0e913aad8d7ed8c44d0262f334f79d95c5bf76c8: fix: Fix display of tenant assignment column to show owner/exclusive-to (@PRTTMPRPHT)
  • 031b89e37f2ff4f1f7b4bae1f05cdf1237de58cb: fix: Fix duplicate tab ids (@PRTTMPRPHT)
  • 6c695e32f2af6d1d4f978b925e7ee9217ec411cf: fix: Fix grouping of sidebar items & admin config access (@PRTTMPRPHT)
  • 6cae13e321e658663ba6f71ac73ea509c03ba1c1: fix: Fix some navigation issues for views which tenants are not supposed to see (@PRTTMPRPHT)
  • 4b8799a95b7891e7fd560c092f1fca4413d3e6a1: fix: Fix various issues around tenant assignment in the UI (@PRTTMPRPHT)
  • 1e99aa6a90852bf16ed21da9a6425b47b1ec66ae: fix: Fix visibility of create template button in table empty state (@PRTTMPRPHT)
  • 4018a278f2a73f03b416f07d696f409e77e5a122: fix: Improve overflow handling of MultiTabEditor tabs (@PRTTMPRPHT)
  • 424882e90a624b2374a4af71e97949c89d892f1e: fix: Make byName quotas on tenants respect allowed node types (@PRTTMPRPHT)
  • a3b0e5004d00ab0f660c469cb55a6307dc9f3e2b: fix: Prevent reassigning of provisioned machines (@PRTTMPRPHT)
  • c86a38112e48ecfe86c110fa8103f1b06de756b6: fix: Prevent tenants from navigating to control plane clusters (@PRTTMPRPHT)
  • c1925bd13a43789d5b17e9c1764c6ba4afa774f4: fix: allow machine metadata updates (#7926) (@mfranczy)
  • 3a8f40ffc0396671f94377077ba7eef91b299baf: fix: app migration issue (#8218) (@FabianKramm)
  • 6cade97c13b684bf27ea3aae50c9315008045672: fix: auto snapshot controller vci.status.virtualcluster nil (#7932) (@jjaferson)
  • 8a855ab85507a8f7b0f24d2f569b983759c1bda3: fix: derive nodeprovider visibility from granted node types (#8089) (@lizardruss)
  • ebbeb67b0026e14abc0f8e40c3b2d987c9f74980: fix: e2e race in baremetalhost (#8461) (@FabianKramm)
  • 16edc613bfd793fa42f368398e1cfbf03a9d581d: fix: enable tenant admins to bind roles to teams in their tenant (#8104) (@seanschneeweiss)
  • 6dd3ce9bc2d26f2216891645c3739e90ea165c63: fix: gate node provider reconcile on the provider entitlement (#8226) (@roehrijn)
  • 9dd2436cc26db96da121fd89eaa8f56108719c1d: fix: machine management inventory gate (#8271) (@mfranczy)
  • a41bb7c45fa44af667576003338e5db7df07a50a: fix: rbac for machines (#7943) (@mfranczy)
  • db16ec5fe4c213a4f583915583e18bfc97d20c17: fix: restore volume snapshot sync (#8088) (@jjaferson)
  • 0e360680f269eb7f951c8247d37ddef606efdd44: fix: static ips for bare metal hosts (#8626) (@FabianKramm)
  • 1149bb2d10a11bab635b8c788e8a8b8124a562b3: fix: terminal + console issue (#8014) (@FabianKramm)
  • a8c1a5297544a36cb544ebb158a92d30eadfd96c: gate NetworkEnvironment pre-release checks on platform >= 4.13.0-alpha.0 (#8098) (@sowmyav27)
  • 9b57ed1d8970bc004abdc923237d3226b2d16c91: migrate certified stacks url away from v2 (#8025) (@cbron)
  • 5ab11992ca931af90fdc26c436879796444a64f9: pr review (@andyluak)
  • 0386f6c42193d8ac20fe08c6bcd155661735930f: refactor(api): move Tenant into EntityInfo (@andyluak)
  • 218394f023a9913b20314befb378a0527e49cd12: refactor(api): tenant label is now tenant.vcluster.com/owner (#7937) (@seanschneeweiss)
  • 606d923e5dbffb493468ee328afcb872f9125a74: refactor(apiserver): one management client for every reader (#8494) (@lizardruss)
  • 0b607987dca1982ddcdbacd22500b298172319da: refactor(autoscaling): decouple Metal3 behind the provider registry (#8195) (@roehrijn)
  • f402e4c8f7231e548331dbde455608307be461ba: refactor(autoscaling): decouple NICo behind a provider interface + registry (foundation) (#8191) (@roehrijn)
  • c88274894ac3a1e2618ec2a6106fdfdb4480dbda: refactor(autoscaling): drop the forwarding aliases and move the core contract into the provider package (@roehrijn)
  • f88aaac894b376d6cc78f70ded6c79828b85356d: refactor(autoscaling): move the bcm node provider into its own package (@roehrijn)
  • d2fc28273df35f01c848ccb622496ccdb20dee9b: refactor(autoscaling): move the cluster api node provider into its own package (@roehrijn)
  • 46a173c8473c1a94ffcb77d16f1c3e1ffaf655b3: refactor(autoscaling): move the kubevirt node provider into its own package (#8193) (@roehrijn)
  • ed2b055df30e7a47392b5ebb7bd8a8dc03a1c870: refactor(autoscaling): move the terraform node provider into its own package (#8197) (@roehrijn)
  • 7e3b87416fa9cfe7865d0f87b05eb8109acfdf82: refactor(e2e): clean up nico lane registration readability (@roehrijn)
  • 1b2aa59f62598308038fe9bd1976c5ba73599800: refactor(e2e): dedupe the lower/raise quota transition steps (@roehrijn)
  • 4b8b7bb40cfd46cfb64879d9b9c05856cbe5d92f: refactor(e2e): drop assertCreatedVPCDestroyed's knownSubnetConflict flag (@roehrijn)
  • 489873e43bf2bb3fb98b64c4ce224218ded69a5d: refactor(e2e): split the NICo suite into parallel lanes, gate image builds on a lease (@roehrijn)
  • 128114f7c45b0cf30c9e69d1f281b1b31c5be8b2: refactor(license): keep the test license manager out of the production build (@johannesfrey)
  • 5041b3c89afe6ce2cc611b018ceff7bd42145c98: refactor(license): make the limit check work for any limited resource (@johannesfrey)
  • 7655fc10892eb1a112b42ffda7323c18445f2cf9: refactor(license): report the user limit with a reached bool (@johannesfrey)
  • 922b3a38d9183824c7d78648165b929bda21d4f6: refactor(license): return the reached user limit instead of a message callback (@johannesfrey)
  • 611722b6daac5261de437912bcd26cba3db5c66d: refactor(license): share one user-limit lookup across the validators (@johannesfrey)
  • 069a1c2a415a6783a6c0c9ccdf31dd757141f7cb: refactor(management): remove orphaned tenants/{name}/nicotoken subresource (#8205) (@roehrijn)
  • 8a4aae36425ecbcda06ee9fe74c1fa0851195c8e: refactor(nico): drop the unimplemented siteIPBlockCIDR field (#8441) (@roehrijn)
  • 50453cef832c45890a75bc0f71992a67ed1d6226: refactor(nico): self-register the probe metric (@roehrijn)
  • 428037371a613b1019ca4b5fb8220aa7905ed31e: refactor(nico): share the 404-tolerant delete across the nico client (@roehrijn)
  • 57893c7a362a6e5fbf1cddce32ae1b12f5f0b01f: refactor(osimage): derive the object key in one place (@r0bnet)
  • dfb19b74e54a92cfdd9286796a9cdf48eba2ce10: refactor(osimage): list parts with the sdk paginator (@r0bnet)
  • 2239de7c1eab1d09e1c7f5f98c9e572b2fc75f37: refactor(osimage): make the phase transitions checkable (@r0bnet)
  • 3059e83cfaaff3a87213f56455ea05ff12d89634: refactor(osimage): name the store contract after multipart uploads, not signing (@r0bnet)
  • 1757432e54f397e7fcd84c0a80569a9f654a7ed3: refactor(osimage): resolve the platform namespace on the request path (@r0bnet)
  • 7c051fdb12649c860fd6811201dda0008af41f66: refactor(osimage): share the subresource image lookup (@r0bnet)
  • 4aa60c2786e00f092dd0833a0a18311782ef9546: refactor(s3): export config builder and client constructor (@r0bnet)
  • c1558654f3201c69b76b2fa406db1c02134985dd: refactor(sshkeys): authorize ssh keys through the access resource mapping (@roehrijn)
  • c545b07dba411328171b8698f1d755e7760488fc: refactor(sshkeys): drop the ssh-key-specific tenant label guard (@roehrijn)
  • 7e0501457a76e9602bc4d0b2fbdedfebb37075e4: refactor(stack): rename stack inputs to parameters (#7914) (@flomedja)
  • 75b0919271b116b7d57ccbd79067689c04b23d6d: refactor(tenant): fold the enable-user limit check into the shared validator (@johannesfrey)
  • fe57b6ce44992cf31913f73642ada95f851aca2d: refactor(tenant): replace resourceAllowances with per-capability spec fields (#7913) (@lizardruss)
  • 816ba584e202376cd5b3ec29180efab0906d57df: refactor(tenant): scope secret-backed management kinds through a translating client (#8105) (@lizardruss)
  • cc2ac6dbb770d24940c8cc95ef354d5303f2abbb: refactor(tenant): share one user-limit check between tenant and user admission (@johannesfrey)
  • 0e4c5d864505c86f1f7c8838814ce54263612145: refactor(ui): call a stack's parameters parameters everywhere (@andyluak)
  • 6d035dff04f900be431b10bf09f5fe70c52cf2e0: refactor(ui): extract project switcher routing and tenant grouping (@andyluak)
  • f91877d7ac33d9da6b4ccdcce1dd4012625d359c: refactor(ui): jump to the shared parent of EditInYAML multiple fields (@andyluak)
  • b21039e15880ce15de4057ce3993cf696cac3eaf: refactor(ui): use TenantTag instead of a copy of it (@andyluak)
  • 62268bb7cb499aa82f032d4573b471d17a14dc73: refactor(ui): use paths constants for instance table links (@andyluak)
  • b76bd1debfae1f44be3f4e331433637ddd898b01: refactor: add deprovisioning as phase (#8500) (@FabianKramm)
  • fe5abb7f262c3c883bb71ce7ddb014a756711a3a: refactor: allow node claim without auto nodes (#8229) (@FabianKramm)
  • cf00167241b5d83d071e33b35115420712d1c807: refactor: bump defualt metal3 version (#8530) (@FabianKramm)
  • 151211ab56fd8d52b9f222c651c9370141c97938: refactor: bump platform go modules from v4 to v5 (#8502) (@neogopher)
  • a1118c137df672a2c3ebe49ea52474dee73a3799: refactor: node environment to network environment (#7921) (@FabianKramm)
  • bbca83f463b05396feb46382c5b15ae4599a93b5: refactor: remove spec.machines (#7922) (@FabianKramm)
  • 31f4fec62828e87044d80bf3fcda309c0b427aa4: stack tasks failure reasons visibility in status (#8353) (@flomedja)
  • aeb15965c1a35c08949d6a018df5006ea485ff88: test(connected-cluster): mark the ha tunnel failover quarantine spec pending (@roehrijn)
  • 84fca16567ec585dadf3e4b6819725380e7e8650: test(e2e): add end-to-end tests for stacks (#8137) (@flomedja)
  • f267a394c75bec3143a00a019f18404abe2d8468: test(e2e): add failure context to ssh key eventually assertions (@roehrijn)
  • b64722b2f1ae22527354a05a6460a21bea4b5ec6: test(e2e): add metal3 node provider coverage (#8253) (@roehrijn)
  • c1b778c570e9571a435b367f8303d1af41674bf0: test(e2e): add on-demand machine pre-handover suite for metal3 (#8527) (@adriankabala)
  • b1bcbc03792d54d531d1cda0d423d3df51ebe145: test(e2e): add reserved machine pre-handover suite for metal3 (#8473) (@adriankabala)
  • 2ac996fa45c43e24071e829f493b72af23a0851b: test(e2e): add tenant admin boundary specs (#8122) (@sowmyav27)
  • 4657a28de97f911b1c80e83e9eb46042ac0a59c6: test(e2e): address review findings in nico quota transition spec (@roehrijn)
  • b56b5b292603796e2b96af76807008dfae617154: test(e2e): boot a metal3 machine and log in to it over ssh (#8516) (@roehrijn)
  • cfb998613d61b980bad613eac1d27549a48659e0: test(e2e): boot a metal3 machine from an uploaded os image (#8568) (@r0bnet)
  • 61f8c5fa0e6fc8781ff4841f0e41990fa8761ae4: test(e2e): boot nico and kubevirt machines from an uploaded os image (#8485) (@r0bnet)
  • bd220af10b19a60ff251fc59bf5d218198c90259: test(e2e): confirm the argo cd connector warning before saving (#8587) (@johannesfrey)
  • 28cb141774f5c1f0bccbee27597fdcadf9c82804: test(e2e): cover deleting and re-adding a Tenant on the same NICo org (#8282) (@roehrijn)
  • 9e465ba2a942554874dcc7997a79d65cc30f8a40: test(e2e): cover network environment assignment, allowlist, binding and deletion protection on the pr gate (#8310) (@rlmcpherson)
  • 11671c69997fbebbf1f2c6c65376d4fe25094377: test(e2e): cover nico rest outage during onboarding, provisioning, and destroy (#8287) (@roehrijn)
  • 827c0e7061260d72e53c90fa2e98dda036cd9d1a: test(e2e): cover nico tenant quota transitions after onboarding (@roehrijn)
  • 2c4a1d7a878ad0ddde41a7fbee1eccfe8e68c953: test(e2e): cover on-demand inline kubevirt VMs and check the refusal's message (#8528) (@cbalan)
  • 3a32a64e1cbdf86d7355f003f8121b3a0c37ff33: test(e2e): cover os image upload, download and tenant custom images (#8345) (@r0bnet)
  • 395e41c3c598a3fd6bef705e33624dd91090daf7: test(e2e): cover shared network environments in the auto-nodes suite (#8311) (@rlmcpherson)
  • 048e2d8aa8cc9fd829b45b142f4643f6d4534cdf: test(e2e): cover the InvalidQuota condition in the quota transition spec (@roehrijn)
  • 709debfebd6a81c47a3b414a4b2ceca97aa8f47b: test(e2e): de-flake the HA dead tunnel spec and dump node state on A12 restore failure (#8446) (@sowmyav27)
  • af98a02940bae0537289b0e59f222c9bcd6bf75d: test(e2e): drop the scenario-id prefixes from stack and argocd spec names (#8257) (@anvesh-loft)
  • 217a1b40d1495818c9e513a1fb51ac949df2ec40: test(e2e): find the patched shared secret by name in the list spec (#8314) (@seanschneeweiss)
  • b4007faf4dbd6cab15d75eb801c36d53386ab63e: test(e2e): fix sorting on permissions to be tenant compatible (#8033) (@seanschneeweiss)
  • bec620790ee596f30f23471a2204b9b0f123d0a7: test(e2e): keep polling the network environment through transient get errors (@roehrijn)
  • aadd4abef35d859e633c88aa7af7b80ab0c3d726: test(e2e): keep the flat-mode teardown spec's Passed result on ENGCP-1511 (@roehrijn)
  • f95853b90bdb4e3056b4ae04bfd9cbb80083d3cf: test(e2e): pin the nico fixture to v2.1.0, drive day-0 over rest and pull the stock images (#8260) (@roehrijn)
  • 2b1a6249395e0c98b2bdf7ec42dfbc2832332b5b: test(e2e): pin the reserved machines node type to the assigned allocation policy (#8508) (@adriankabala)
  • 6690485e1116cdfb4185fd222a3760ec1025b888: test(e2e): re-enable the standalone auto-nodes specs (#8320) (@rlmcpherson)
  • 0dcf028afe78c6e51966e76c03d59060ed9208da: test(e2e): round-trip an os image through real aws s3 (#8372) (@r0bnet)
  • 503c6fa444d45f3b613373ae44ddf8dbe4cda5cf: test(e2e): run the nico node claim and osimage specs in flat network mode (#8235) (@roehrijn)
  • 99b9d0e37181b8f0af8cb311ab43a3484ac32c7e: test(e2e): tenant capability grants and tenant admin boundary access (#8133) (@sowmyav27)
  • 39d530b1074c191f0c98fc515f77a73c41f76719: test(e2e): tenant security boundary specs for cluster reach and role binding (#8336) (@sowmyav27)
  • bc0431c8633eec34f427ea904bcc2a87c1dd2fc5: test(e2e): tighten the tenant security boundary controls and name the caller in cluster access refusals (#8534) (@sowmyav27)
  • 2ed92678f53101f51b579317c071abbad22a45ff: test(e2e): wait for admin authorization before vault shared secret specs (@roehrijn)
  • 0cae117ac1ef8a5b966522a31691129b86a00bc2: test(license): cover the user-limit helper and both user validators directly (@johannesfrey)
  • 3b3e7c3762afc52523a55fd7178316a5d7581893: test(license): give licensetest one helper per case (@johannesfrey)
  • 42dc421a90756b78cf8015623ca610bf6a8ffebd: test(license): let SetLimits register its own cleanup (@johannesfrey)
  • 4ab922181fda850282ffac9d3602691de4200086: test(license): use t.Context in the user-limit tests (@johannesfrey)
  • 4f82599c114a11418029cc50503ec925c97aa3f7: test(nico): add e2e coverage for OSImage to NICo OperatingSystem materialization (@roehrijn)
  • 1b6e01f73a3209fc6602b2a347749ffb280b7d12: test(nico): assert provider release instead of nico tenant deletion (@roehrijn)
  • 4a369242b58cad62e578fdc58556a6802e9c5c8e: test(nico): assert the particular provider-org rejection (@roehrijn)
  • 9d6610b2440160d5ae15782e6a61fab602a9be58: test(nico): cover network environment provider sources (#8383) (@roehrijn)
  • 7a862962ecbabba8dbef1bf892276143d995a432: test(nico): drop the removed cached field from the connectors test literal (@roehrijn)
  • 9b87ac0275003f90c22eaf2d874b04573573f068: test(nico): drop the trailing blank line left by the rebase (@roehrijn)
  • a3ab381345d679c3a087837436b278fd369319af: test(nico): match the nodeprovider org rejection by message, not status type (@roehrijn)
  • b76b666d3289eff3503105a53763434f8992efeb: test(nico): state the subnet list check as a plain count (@roehrijn)
  • ce9ac997ff03e8618b457a7ff37b09d9b5e7a657: test(nodeclaim): schedule before provisioning in quota-cleared wait test (@roehrijn)
  • 7e9794d996889b98ac382c03602afc56b82de628: test(nodetypes): declare the node types capability in the provider-bound fixtures (#8439) (@roehrijn)
  • 2b5c88279be8180069da1175466e3dc186e51026: test(osimage): assert a second reconcile changes nothing (@r0bnet)
  • fa794f499f545cfe88522102a8d9c9d31d6acda1: test(osimage): cover the upload session, store and connector loader (@r0bnet)
  • 499659a6f6031460bd03014f91332f171ed5ef73: test(osimage): cover upload paging, refresh and the batch boundary (@r0bnet)
  • 6f97a3e80aed6cc84f1f8cebe6fabd6224ca9f50: test(osimage): pin the object size check to a head (@r0bnet)
  • e19d07a3b971d33d81b95d2de45df6b6fa832397: test(osimage): read the tenant test contexts as tenant reads (@r0bnet)
  • 9d7c177d51930280b006988b0d14b092a2ad2711: test(sshkeys): cover update and patch on a key shared for read only (@roehrijn)
  • 936864ed745b9b7f9ef6c1e593b27215dcfb0363: test(stack): check that one bad stack does not block the others (#8607) (@flomedja)
  • 6c1b5028635203ca238c80ab71d667d18681409f: test(tenant): adds e2e for stack access for tenants (@zerbitx)
  • a503c3bf2461b999dc1f9ec5eb66e1cb3face1ca: validate that only manifests or chart can be set in app config (#8181) (@flomedja)

Don't miss a new loft release

NewReleases is sending notifications on new releases.