Skip to content

Commit

Permalink
Force application/json encoding with fake-apiserver
Browse files Browse the repository at this point in the history
Signed-off-by: Tamal Saha <[email protected]>
  • Loading branch information
tamalsaha committed Oct 11, 2024
1 parent e4c43a5 commit 65ce6c0
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 4 deletions.
2 changes: 1 addition & 1 deletion local.kubeconfig
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
apiVersion: v1
clusters:
- cluster:
server: http://127.0.0.1:55229
server: http://127.0.0.1:64026
name: default-cluster
contexts:
- context:
Expand Down
3 changes: 3 additions & 0 deletions pkg/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -283,6 +283,9 @@ func (s *Server) Run() (*http.Server, *rest.Config, error) {

cfg := rest.Config{
Host: fmt.Sprintf("http://127.0.0.1:%d", l.Addr().(*net.TCPAddr).Port),
ContentConfig: rest.ContentConfig{
AcceptContentTypes: runtime.ContentTypeJSON,
},
}
return srv, &cfg, nil
}
Expand Down
42 changes: 39 additions & 3 deletions test-client/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,12 @@ import (
"fmt"

apps "k8s.io/api/apps/v1"
core "k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
"k8s.io/apimachinery/pkg/util/json"
"k8s.io/client-go/kubernetes"
clientgoscheme "k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
Expand All @@ -41,6 +45,9 @@ func NewClient() (client.Client, error) {
cfg.QPS = 100
cfg.Burst = 100

// WARNING: must be set to application/json to avoid accidentally using protobuf encoding with fake-apiserver
cfg.AcceptContentTypes = runtime.ContentTypeJSON

hc, err := rest.HTTPClientFor(cfg)
if err != nil {
return nil, err
Expand Down Expand Up @@ -98,13 +105,42 @@ func useKubebuilderClient() error {
return err
}

var list apps.DeploymentList
var u unstructured.Unstructured
raw := `{
"apiVersion": "v1",
"data": {
"password": "UyFCXCpkJHpEc2I9",
"username": "YWRtaW4="
},
"kind": "Secret",
"metadata": {
"creationTimestamp": null,
"name": "db-user-pass2",
"namespace": "default"
}
}`
err = json.Unmarshal([]byte(raw), &u)
if err != nil {
return err
}
err = kc.Create(context.TODO(), &u)
if err != nil {
return err
}

var sec core.Secret
if err = kc.Get(context.TODO(), types.NamespacedName{Name: "db-user-pass2", Namespace: "default"}, &sec); err != nil {
return err
}
fmt.Println(client.ObjectKeyFromObject(&sec))

var list core.SecretList
err = kc.List(context.TODO(), &list)
if err != nil {
return err
}
for _, db := range list.Items {
fmt.Println(client.ObjectKeyFromObject(&db))
for _, items := range list.Items {
fmt.Println(client.ObjectKeyFromObject(&items))
}
return nil
}

0 comments on commit 65ce6c0

Please sign in to comment.