From 90a3da2cc25650d567ff136b29fbb89ccb601c68 Mon Sep 17 00:00:00 2001 From: Julian Sommer <115516918+juliansommer@users.noreply.github.com> Date: Thu, 26 Mar 2026 11:59:44 +1000 Subject: [PATCH] fix: daemon nil pointer --- spinifex/daemon/daemon.go | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/spinifex/daemon/daemon.go b/spinifex/daemon/daemon.go index 00dc11a85..b4849bbc4 100644 --- a/spinifex/daemon/daemon.go +++ b/spinifex/daemon/daemon.go @@ -419,11 +419,6 @@ func (d *Daemon) subscribeAll() error { {"ec2.AuthorizeSecurityGroupEgress", d.handleEC2AuthorizeSecurityGroupEgress, "spinifex-workers"}, {"ec2.RevokeSecurityGroupIngress", d.handleEC2RevokeSecurityGroupIngress, "spinifex-workers"}, {"ec2.RevokeSecurityGroupEgress", d.handleEC2RevokeSecurityGroupEgress, "spinifex-workers"}, - {"ec2.AllocateAddress", d.handleEC2AllocateAddress, "spinifex-workers"}, - {"ec2.ReleaseAddress", d.handleEC2ReleaseAddress, "spinifex-workers"}, - {"ec2.AssociateAddress", d.handleEC2AssociateAddress, "spinifex-workers"}, - {"ec2.DisassociateAddress", d.handleEC2DisassociateAddress, "spinifex-workers"}, - {"ec2.DescribeAddresses", d.handleEC2DescribeAddresses, "spinifex-workers"}, {"ec2.ModifyInstanceAttribute", d.handleEC2ModifyInstanceAttribute, "spinifex-workers"}, {"ec2.start", d.handleEC2StartStoppedInstance, "spinifex-workers"}, {"ec2.terminate", d.handleEC2TerminateStoppedInstance, "spinifex-workers"}, @@ -452,6 +447,18 @@ func (d *Daemon) subscribeAll() error { {"spinifex.cluster.shutdown.infra", d.handleShutdownInfra, ""}, } + // EIP operations require external IPAM (pool mode). Only subscribe when available; + // without a subscriber the gateway returns a NATS timeout → clean error to the client. + if d.eipService != nil { + subs = append(subs, + natsSub{"ec2.AllocateAddress", d.handleEC2AllocateAddress, "spinifex-workers"}, + natsSub{"ec2.ReleaseAddress", d.handleEC2ReleaseAddress, "spinifex-workers"}, + natsSub{"ec2.AssociateAddress", d.handleEC2AssociateAddress, "spinifex-workers"}, + natsSub{"ec2.DisassociateAddress", d.handleEC2DisassociateAddress, "spinifex-workers"}, + natsSub{"ec2.DescribeAddresses", d.handleEC2DescribeAddresses, "spinifex-workers"}, + ) + } + for _, s := range subs { var sub *nats.Subscription var err error