From dd79a3b3f1e5d45318e50cde9d0f1e3c96981947 Mon Sep 17 00:00:00 2001 From: phm07 <22707808+phm07@users.noreply.github.com> Date: Thu, 10 Sep 2026 10:32:27 +0200 Subject: [PATCH 1/3] fix(server): missing firewalls in describe --- internal/cmd/server/describe.go | 11 +++++++++++ internal/cmd/server/describe_test.go | 3 +++ 2 files changed, 14 insertions(+) diff --git a/internal/cmd/server/describe.go b/internal/cmd/server/describe.go index 501dc942e..1154b317f 100644 --- a/internal/cmd/server/describe.go +++ b/internal/cmd/server/describe.go @@ -92,6 +92,17 @@ var DescribeCmd = base.DescribeCmd[*hcloud.Server]{ fmt.Fprintf(out, " No Floating IPs\n") } + fmt.Fprintln(out) + fmt.Fprintf(out, " Firewalls:\n") + if len(server.PublicNet.Firewalls) > 0 { + for _, f := range server.PublicNet.Firewalls { + fmt.Fprintf(out, " - ID:\t%d\n", f.Firewall.ID) + fmt.Fprintf(out, " Status:\t%s\n", f.Status) + } + } else { + fmt.Fprintf(out, " No Firewalls\n") + } + fmt.Fprintln(out) fmt.Fprintf(out, "Private Net:\n") if len(server.PrivateNet) > 0 { diff --git a/internal/cmd/server/describe_test.go b/internal/cmd/server/describe_test.go index 005ffa325..197a9e862 100644 --- a/internal/cmd/server/describe_test.go +++ b/internal/cmd/server/describe_test.go @@ -118,6 +118,9 @@ Public Net: Floating IPs: No Floating IPs + Firewalls: + No Firewalls + Private Net: No Private Networks From e2a81438621f74596e810016d2f33dc3b9e8c834 Mon Sep 17 00:00:00 2001 From: phm07 <22707808+phm07@users.noreply.github.com> Date: Thu, 10 Sep 2026 10:59:49 +0200 Subject: [PATCH 2/3] fetch firewall name --- internal/cmd/server/describe.go | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/internal/cmd/server/describe.go b/internal/cmd/server/describe.go index 1154b317f..94b720323 100644 --- a/internal/cmd/server/describe.go +++ b/internal/cmd/server/describe.go @@ -96,7 +96,16 @@ var DescribeCmd = base.DescribeCmd[*hcloud.Server]{ fmt.Fprintf(out, " Firewalls:\n") if len(server.PublicNet.Firewalls) > 0 { for _, f := range server.PublicNet.Firewalls { - fmt.Fprintf(out, " - ID:\t%d\n", f.Firewall.ID) + var err error + fw, _, err := s.Client().Firewall().GetByID(s, f.Firewall.ID) + if err != nil { + return err + } + if fw == nil { + continue + } + fmt.Fprintf(out, " - ID:\t%d\n", fw.ID) + fmt.Fprintf(out, " Name:\t%s\n", fw.Name) fmt.Fprintf(out, " Status:\t%s\n", f.Status) } } else { From dbe1f81615015267c1b02822f7884845429a527d Mon Sep 17 00:00:00 2001 From: phm07 <22707808+phm07@users.noreply.github.com> Date: Mon, 14 Sep 2026 16:05:37 +0200 Subject: [PATCH 3/3] add attached firewall to describe test --- internal/cmd/server/describe_test.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/internal/cmd/server/describe_test.go b/internal/cmd/server/describe_test.go index 197a9e862..b344406a2 100644 --- a/internal/cmd/server/describe_test.go +++ b/internal/cmd/server/describe_test.go @@ -78,13 +78,25 @@ func TestDescribe(t *testing.T) { }, IncludedTraffic: 20 * util.Tebibyte, Protection: hcloud.ServerProtection{Delete: true, Rebuild: true}, - Created: time.Date(2036, 8, 12, 12, 0, 0, 0, time.UTC), + PublicNet: hcloud.ServerPublicNet{ + Firewalls: []*hcloud.ServerFirewallStatus{ + { + Firewall: hcloud.Firewall{ID: 321}, + Status: hcloud.FirewallStatusApplied, + }, + }, + }, + Created: time.Date(2036, 8, 12, 12, 0, 0, 0, time.UTC), } fx.Client.ServerClient.EXPECT(). Get(gomock.Any(), "test"). Return(srv, nil, nil) + fx.Client.FirewallClient.EXPECT(). + GetByID(gomock.Any(), int64(321)). + Return(&hcloud.Firewall{ID: 321, Name: "test-firewall"}, nil, nil) + out, errOut, err := fx.Run(cmd, []string{"test"}) expOut := fmt.Sprintf(`ID: 123 @@ -119,7 +131,9 @@ Public Net: No Floating IPs Firewalls: - No Firewalls + - ID: 321 + Name: test-firewall + Status: applied Private Net: No Private Networks