diff --git a/spinifex/handlers/ec2/image/service_impl.go b/spinifex/handlers/ec2/image/service_impl.go index 60722292e..52d9748fd 100644 --- a/spinifex/handlers/ec2/image/service_impl.go +++ b/spinifex/handlers/ec2/image/service_impl.go @@ -897,6 +897,8 @@ func (s *ImageServiceImpl) CopyImage(ctx context.Context, input *ec2.CopyImageIn ImageOwnerAlias: accountID, CreationDate: time.Now().UTC(), BootMode: srcMeta.BootMode, + Distro: srcMeta.Distro, + DistroFamily: srcMeta.DistroFamily, Tags: tags, SourceDigest: srcMeta.SourceDigest, // Zero-copy: the new config shares the source's already-durable diff --git a/spinifex/handlers/ec2/image/service_impl_test.go b/spinifex/handlers/ec2/image/service_impl_test.go index 29b285f34..e00b814f2 100644 --- a/spinifex/handlers/ec2/image/service_impl_test.go +++ b/spinifex/handlers/ec2/image/service_impl_test.go @@ -1781,6 +1781,8 @@ func TestCopyImage_InheritsSourceFields(t *testing.T) { RootDeviceType: "ebs", Description: "arm source", BootMode: "uefi", + Distro: "debian-12", + DistroFamily: "debian", SourceDigest: digest, }) @@ -1796,6 +1798,8 @@ func TestCopyImage_InheritsSourceFields(t *testing.T) { assert.Equal(t, uint64(32), newMeta.VolumeSizeGiB) assert.Equal(t, "ebs", newMeta.RootDeviceType) assert.Equal(t, "uefi", newMeta.BootMode, "CopyImage must propagate BootMode from source") + assert.Equal(t, "debian-12", newMeta.Distro, "CopyImage must propagate Distro from source") + assert.Equal(t, "debian", newMeta.DistroFamily, "cloud-init family detection reads DistroFamily") assert.Equal(t, digest, newMeta.SourceDigest, "a zero-copy share still holds the source artifact") assert.False(t, newMeta.CreationDate.Before(before), "CreationDate must be refreshed on copy, not inherited") }