Julian Sommer
1c6950b89e
release: update go.mod for v0.2.2
v0.2.2
2026-03-06 09:45:34 +10:00
Julian Sommer
94ec56bb59
fix: extract shared type
2026-03-06 09:45:34 +10:00
Julian Sommer
0b2e613c6c
fix: diff-coverage.sh
2026-03-06 08:22:30 +10:00
Julian Sommer
2d304528b8
chore: bump deps
2026-03-06 08:15:48 +10:00
Julian Sommer
35f2104325
feat: more tests
2026-03-05 15:09:24 +10:00
Julian Sommer
c4027a0380
test: add gateway core routing, IAM auth, and handler test coverage
...
Squash of dev commits: gateway core routing/policy/middleware tests,
IAM auth and handler tests, awserrors tests, respondWithJSON helper,
utils refactor into focused files, and daemon test speedups.
2026-03-05 14:20:00 +10:00
Julian Sommer
77c6d05042
refactor: replace NYTimes/gziphandler with stdlib compress/gzip
...
Drop the external gziphandler dependency in hiveui. The replacement
uses a simple http.ResponseWriter wrapper that checks Content-Type
against an allowlist before enabling gzip compression. Same behavior,
zero external deps.
2026-03-05 12:53:46 +10:00
Julian Sommer
8af3d2e5fa
feat: migrate off fiber ( #62 )
2026-03-05 12:53:46 +10:00
Julian Sommer
49c5807ef1
refactor: accounts
2026-03-05 11:41:51 +10:00
Julian Sommer
5fad038b87
feat: IAM account scoping ( #61 )
2026-03-05 09:06:35 +10:00
Julian Sommer
48c0565d47
fix: ovn shut down on stop-dev.sh
2026-03-03 15:12:44 +10:00
Julian Sommer
371193a832
feat: IAM v1 ( #59 )
2026-03-03 15:23:19 +11:00
Julian Sommer
9d66ef8233
fix: sanitize error codes to prevent leaking internal errors to clients
...
Add awserrors.ValidErrorCode() to validate error strings against
ErrorLookup before sending to clients. Replace hardcoded
"ValidationError" strings in utils.go with awserrors constants.
2026-02-27 08:49:18 +10:00
Julian Sommer
992111e809
fix: race condition + frontend refetching
2026-02-27 08:14:50 +10:00
Julian Sommer
12c2e2789e
fix: skip diff coverage when instrumentable lines below minimum
...
The MIN_LOC=100 threshold checked total diff lines, not instrumentable
lines. A commit with many non-instrumentable lines (structs, comments)
but only 1-2 instrumentable lines would unfairly fail at 0% coverage.
Add a minimum instrumentable lines threshold (5) so the check skips
when the sample size is too small to be meaningful.
2026-02-26 11:35:22 +10:00
Julian Sommer
3720a5ba90
feat: blockdevicemappings fix ( #55 )
2026-02-26 11:47:37 +11:00
Julian Sommer
de0e049b16
fix: e2e console output
2026-02-26 08:26:34 +10:00
Julian Sommer
6e3fe148af
feat: frontend features
2026-02-26 08:22:55 +10:00
Julian Sommer
81b990a238
fix: e2e verify errored instance didnt restart on launch
2026-02-25 11:33:44 +10:00
Julian Sommer
52f2498699
fix: proper recovery checks e2e
2026-02-25 11:16:07 +10:00
Julian Sommer
61e8eb9d91
fix: reset LaunchTime on instance relaunch to prevent watchdog termination
...
During cluster restart, restoreInstances resets running instances (with
dead QEMU) to pending for relaunch, but didn't reset LaunchTime. The
pending watchdog (5min timeout) saw the stale LaunchTime from the
original launch and immediately marked instances as failed/terminated,
preventing any relaunch from succeeding.
2026-02-25 10:48:16 +10:00
Julian Sommer
1453beca6b
Merge remote-tracking branch 'origin/main' into dev
2026-02-25 10:45:45 +10:00
Julian Sommer
d0056ee925
fix: daemon-level retry with backoff for NATS/JetStream startup ( #52 )
2026-02-25 11:43:10 +11:00
Julian Sommer
55486490aa
fix: kv stream recovery ( #54 )
2026-02-25 11:41:28 +11:00
Julian Sommer
b370f6336e
docs
2026-02-25 10:01:12 +10:00
Julian Sommer
1910347cce
fix: make building on start-dev.sh opt in
2026-02-25 09:56:13 +10:00
dependabot[bot]
e08b8140a6
chore: bump github.com/gofiber/fiber/v2 from 2.52.11 to 2.52.12 ( #51 )
2026-02-25 10:36:09 +11:00
dependabot[bot]
a7e0cb6972
chore: bump github.com/nats-io/nats-server/v2 ( #50 )
2026-02-25 10:35:49 +11:00
Julian Sommer
6b9fc7b600
refactor: daemon
2026-02-25 08:22:46 +10:00
Julian Sommer
c2e66e1ab4
refactor: extract respondWithError; fix nil panic in RunInstance
...
Extract duplicated respondWithError closures into a single package-level
function. Guard against nil ImageId in handleEC2RunInstances to prevent
panic under race conditions. Fix diff-coverage base ref for main branch.
2026-02-24 15:02:57 +10:00
Julian Sommer
deae613a75
refactor: split daemon_handlers.go into per-domain files
...
Split the monolithic daemon_handlers.go into focused files:
- daemon_handlers_account.go
- daemon_handlers_console.go
- daemon_handlers_igw.go
- daemon_handlers_image.go
- daemon_handlers_instance.go
- daemon_handlers_key.go
- daemon_handlers_snapshot.go
- daemon_handlers_tag.go
- daemon_handlers_volume.go
- daemon_handlers_vpc.go
Add tests for ModifyVolume success, TerminateStoppedInstance with volumes,
DescribeInstanceTypes capacity filter, StartStoppedInstance type-not-available,
AttachVolume/DetachVolume validation paths, RunInstances error paths, and
DescribeInstances malformed ID.
Fix diff-coverage.sh to use git rename/copy detection (-M -C) so file
splits are not incorrectly flagged as all-new code.
2026-02-24 14:28:24 +10:00
Julian Sommer
8188707c91
feat: VPC networking v1 — OVN-based virtual networking for EC2 instances
2026-02-24 14:13:57 +10:00
Julian Sommer
b9c528ce4c
fix frontend vuln
2026-02-24 11:56:17 +10:00
Julian Sommer
5992d3f056
test: general test coverage improvements across hive packages
...
Coverage improvements:
- awsec2query: parser byte slice, invalid input, locationName fallback (73% → 83%)
- config: EC2StartInstancesResponse.Respond NATS round-trip, NodeBaseDir, ShardWAL
- daemon: 14 NATS delegate handlers, device allocation, canAllocate (count=0 boundary),
resource management, shutdown ACK/progress, JetStream WriteServiceManifest,
fix smallestAllocType to score by both vCPU and memory
- gateway: GenerateEC2ErrorResponse XML validation (fixed no-op assertion),
DiscoverActiveNodes (5 scenarios), ParseAWSQueryArgs, ParseArgsToStruct (41.6% → 52.1%)
- utils: ConnectNATS (success, token, wrong token, bad address), NATSRequest
- vm: ResetNodeLocalState, PIDFile/QMP, NoGraphic, Serial+Console partial configs,
NetDevs, ARM64, KVM, full config (68.1% → 91.7%)
2026-02-20 15:09:33 +10:00
Julian Sommer
6bc36455fc
test coverage improvements: instance, hiveui, health, utils
...
Total hive coverage: 54.3% → 55.8% (+1.5%)
- instance/service_impl.go: new test file (generateHostname, RunInstance,
cloud-init template, constructor)
- hiveui.go: new test file (security headers, gzip middleware, New(),
Status(), Reload())
- daemon/health.go: extend existing tests (handleInstanceCrash core flow,
first crash time, unknown instance type, maybeRestart scheduling)
- utils/utils.go: extend existing tests (pidPath all branches, RuntimeDir,
extractDiskImagePath, WritePidFile error path)
- fix: use smallestAllocType in health tests to avoid CI resource failures
2026-02-20 13:46:31 +10:00
Julian Sommer
db45c028be
test: e2e + unit coverage for ModifyInstanceAttribute and key service
...
- Add Phase 7b to single-node E2E: stop instance, modify type (nano →
xlarge), start, SSH in, verify vCPU count (nproc) and memory
(/proc/meminfo) match the new instance type
- Add Phase 8q negative test: modify-instance-attribute on running
instance expects InvalidInstanceID.NotFound
- Improve key service integration test coverage (mulga-580)
- Pin viperblock/predastore CI checkout to main (fixes feature branch CI)
- Update TEST_COVERAGE.md
2026-02-20 12:01:03 +10:00
Julian Sommer
ff6ca8a057
feat: modify-instance-attribute ( #48 )
2026-02-20 12:19:20 +11:00
Julian Sommer
df0e8a6459
ci: add race detection, fix test race conditions
2026-02-20 09:40:02 +10:00
Julian Sommer
3dc3d41d79
ci: enforce code coverage
2026-02-20 08:58:44 +10:00
Julian Sommer
eba702b1f2
test: add 10 viperblockd coverage tests, fix daemon test sleep
...
viperblockd: add snapshot handler, sync/unmount/delete with VB instance,
invalid JSON, dual-publish, generic topic routing, and auxiliary volume
suffix tests. Coverage 43.1% → 53.6%.
daemon: write clean shutdown marker in restore tests to skip the 3s
crash-recovery sleep (no QEMU runs in tests). Suite 36s → 6s.
2026-02-20 08:42:30 +10:00
Julian Sommer
e6ffecafca
gofix: exclude stringsbuilder analyzer from modernize checks
2026-02-19 15:15:24 +10:00
Julian Sommer
27a27f660a
feat: add go fix check in ci
2026-02-19 14:43:59 +10:00
Julian Sommer
b4dcd3ead9
gofix: modernize codebase with go fix analyzers
...
Apply safe modernizations across the codebase:
- minmax: replace if/else clamping with min/max builtins
- fmtappendf: replace []byte(fmt.Sprintf) with fmt.Appendf
- forvar: remove redundant loop variable re-declarations
- inline: rename reflect.Ptr to reflect.Pointer
- mapsloop: replace explicit map loops with maps package
- omitzero: remove ineffective omitempty on time.Time fields
- rangeint: replace 3-clause for loops with range-over-int
- slicescontains: replace manual loops with slices.Contains
2026-02-19 14:40:16 +10:00
Julian Sommer
43acb57b9f
feat: add e2e tests for serial console access and error compliance
2026-02-19 14:23:55 +10:00
Julian Sommer
17c011e9db
fix
2026-02-19 13:17:20 +10:00
Julian Sommer
a330e35d5f
feat: account settings console access ( #47 )
2026-02-19 13:05:11 +10:00
Julian Sommer
a5ff1ca5a7
feat: more awserrors ( #46 )
2026-02-19 12:15:45 +11:00
Julian Sommer
8573800914
fix: move instances with unavailable type to stopped on recovery ( #45 )
2026-02-19 10:31:13 +11:00
Julian Sommer
cefbcea485
fix: README.md
2026-02-19 08:30:25 +10:00
Julian Sommer
1bf4a9cfab
fix: ci branches
2026-02-18 15:05:28 +10:00