Skip to content

Commit

Permalink
ignore DeploymentConfig warning on oc status
Browse files Browse the repository at this point in the history
  • Loading branch information
sanchezl committed Jun 3, 2024
1 parent 143d405 commit a09ed4b
Show file tree
Hide file tree
Showing 3 changed files with 90 additions and 1 deletion.
3 changes: 2 additions & 1 deletion pkg/cli/status/status.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"fmt"

"github.com/gonum/graph/encoding/dot"
"github.com/openshift/oc/pkg/helpers/apps"
"github.com/spf13/cobra"

kapierrors "k8s.io/apimachinery/pkg/api/errors"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/cli-runtime/pkg/genericiooptions"
Expand Down Expand Up @@ -106,6 +106,7 @@ func (o *StatusOptions) Complete(f kcmdutil.Factory, cmd *cobra.Command, args []
if err != nil {
return err
}
clientConfig.WarningHandler = apps.NewIgnoreDeploymentConfigWarningHandler(clientConfig.WarningHandler)
kclientset, err := kubernetes.NewForConfig(clientConfig)
if err != nil {
return err
Expand Down
22 changes: 22 additions & 0 deletions pkg/helpers/apps/warning_handler.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package apps

import (
"strings"

"k8s.io/client-go/rest"
)

type ignoreDeploymentConfigWarningHandler struct {
handler rest.WarningHandler
}

func NewIgnoreDeploymentConfigWarningHandler(handler rest.WarningHandler) rest.WarningHandler {
return &ignoreDeploymentConfigWarningHandler{handler: handler}
}

func (h *ignoreDeploymentConfigWarningHandler) HandleWarningHeader(code int, agent string, text string) {
if h.handler == nil || strings.Contains(text, `apps.openshift.io/v1 DeploymentConfig is deprecated`) {
return
}
h.handler.HandleWarningHeader(code, agent, text)
}
66 changes: 66 additions & 0 deletions pkg/helpers/apps/warning_handler_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
package apps

import (
"net/http"
"testing"
)

func TestHandleWarningHeader(t *testing.T) {
testCases := []struct {
name string
text string
wraps bool
expectOutput bool
}{
{
name: "deprecated old",
text: `apps.openshift.io/v1 DeploymentConfig is deprecated in v4.14+, unavailable in v4.10000+`,
wraps: true,
expectOutput: false,
},
{
name: "deprecated new",
text: `apps.openshift.io/v1 DeploymentConfig is deprecated in v1.27+`,
wraps: true,
expectOutput: false,
},
{
name: "do not panic no match",
text: `something else`,
},
{
name: "do not panic match",
text: `apps.openshift.io/v1 DeploymentConfig is deprecated in v1.27+`,
wraps: false,
},
{
name: "not deprecation warning",
text: `DeploymentConfig is not deprecated`,
wraps: true,
expectOutput: true,
},
}
for _, tc := range testCases {
t.Run(tc.name, func(t *testing.T) {
var wrappedHandler mockWarningHandler
if tc.wraps {
wrappedHandler = mockWarningHandler{}
}
h := NewIgnoreDeploymentConfigWarningHandler(&wrappedHandler)
h.HandleWarningHeader(http.StatusOK, "agent", tc.text)
if tc.wraps {
if tc.expectOutput != wrappedHandler.invoked {
t.Fatalf("Wrapped hander: invoke expected: %v, invoke actual: %v", tc.expectOutput, wrappedHandler.invoked)
}
}
})
}
}

type mockWarningHandler struct {
invoked bool
}

func (m *mockWarningHandler) HandleWarningHeader(warnStatusCode int, header string, text string) {
m.invoked = true
}

0 comments on commit a09ed4b

Please sign in to comment.