Skip to content

Commit

Permalink
Fix binding e2e test (#1332)
Browse files Browse the repository at this point in the history
* Fix binding e2e test

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip

* wip
  • Loading branch information
piotrmiskiewicz authored Oct 17, 2024
1 parent 2240552 commit def7eae
Show file tree
Hide file tree
Showing 6 changed files with 57 additions and 17 deletions.
3 changes: 2 additions & 1 deletion cmd/broker/binding_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ func TestBinding(t *testing.T) {
suite.processProvisioningByOperationID(opID)
suite.WaitForOperationState(opID, domain.Succeeded)

// when
resp = suite.CallAPI("PUT", fmt.Sprintf("oauth/v2/service_instances/%s/service_bindings/%s", iid, bid),
`{
"service_id": "47c9dcbf-ff30-448e-ab36-d3bad66ba281",
Expand All @@ -44,7 +45,7 @@ func TestBinding(t *testing.T) {
suite.Log(string(b))
suite.Log(resp.Status)

respRuntimes := suite.CallAPI("GET", "/info/runtimes?bindings=true", "")
respRuntimes := suite.CallAPI("GET", "/runtimes?bindings=true", "")
b, _ = io.ReadAll(respRuntimes.Body)
suite.Log(string(b))
suite.Log(resp.Status)
Expand Down
1 change: 1 addition & 0 deletions cmd/broker/broker_suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -873,6 +873,7 @@ func (s *BrokerSuiteTest) LastProvisionInput(iid string) gqlschema.ProvisionRunt
}

func (s *BrokerSuiteTest) Log(msg string) {
s.t.Helper()
s.t.Log(msg)
}

Expand Down
5 changes: 3 additions & 2 deletions cmd/broker/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import (
"sort"
"time"

"k8s.io/client-go/kubernetes"

imv1 "github.com/kyma-project/infrastructure-manager/api/v1"

"github.com/kyma-project/kyma-environment-broker/internal/expiration"
Expand Down Expand Up @@ -58,7 +60,6 @@ import (
apiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
"k8s.io/apimachinery/pkg/util/wait"
"k8s.io/client-go/dynamic"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/rest"
"sigs.k8s.io/controller-runtime/pkg/client"
Expand Down Expand Up @@ -166,7 +167,7 @@ type ProfilerConfig struct {

type K8sClientProvider interface {
K8sClientForRuntimeID(rid string) (client.Client, error)
K8sClientSetForRuntimeID(runtimeID string) (*kubernetes.Clientset, error)
K8sClientSetForRuntimeID(runtimeID string) (kubernetes.Interface, error)
}

type KubeconfigProvider interface {
Expand Down
8 changes: 6 additions & 2 deletions cmd/broker/suite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -926,8 +926,12 @@ func fixConfig() *Config {
Broker: broker.Config{
EnablePlans: []string{"azure", "trial", "aws", "own_cluster", "preview", "sap-converged-cloud", "gcp", "free"},
Binding: broker.BindingConfig{
Enabled: true,
BindablePlans: []string{"aws", "azure"},
Enabled: true,
BindablePlans: []string{"aws", "azure"},
ExpirationSeconds: 900,
MaxExpirationSeconds: 1000,
MinExpirationSeconds: 600,
MaxBindingsCount: 2,
},
AllowUpdateExpiredInstanceWithContext: true,
KimConfig: broker.KimConfig{
Expand Down
11 changes: 5 additions & 6 deletions internal/broker/bindings/bindings_manager.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"fmt"
"time"

"k8s.io/client-go/kubernetes"

apierrors "k8s.io/apimachinery/pkg/api/errors"

"github.com/kyma-project/kyma-environment-broker/internal"
Expand All @@ -14,7 +16,6 @@ import (
v1 "k8s.io/api/core/v1"
rbacv1 "k8s.io/api/rbac/v1"
mv1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
)

const (
Expand All @@ -31,7 +32,7 @@ type BindingsManager interface {
}

type ClientProvider interface {
K8sClientSetForRuntimeID(runtimeID string) (*kubernetes.Clientset, error)
K8sClientSetForRuntimeID(runtimeID string) (kubernetes.Interface, error)
}

type KubeconfigProvider interface {
Expand Down Expand Up @@ -77,9 +78,8 @@ func (c *ServiceAccountBindingsManager) Create(ctx context.Context, instance *in
&rbacv1.ClusterRole{
TypeMeta: mv1.TypeMeta{APIVersion: rbacv1.SchemeGroupVersion.String(), Kind: "ClusterRole"},
ObjectMeta: mv1.ObjectMeta{
Name: serviceBindingName,
Labels: map[string]string{"app.kubernetes.io/managed-by": "kcp-kyma-environment-broker"},
Namespace: BindingNamespace,
Name: serviceBindingName,
Labels: map[string]string{"app.kubernetes.io/managed-by": "kcp-kyma-environment-broker"},
},
Rules: []rbacv1.PolicyRule{
{
Expand All @@ -89,7 +89,6 @@ func (c *ServiceAccountBindingsManager) Create(ctx context.Context, instance *in
},
},
}, mv1.CreateOptions{})

if err != nil && !apierrors.IsAlreadyExists(err) {
return "", time.Time{}, fmt.Errorf("while creating a cluster role: %v", err)
}
Expand Down
46 changes: 40 additions & 6 deletions internal/kubeconfig/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@ import (
"fmt"

"k8s.io/apimachinery/pkg/api/errors"
machineryv1 "k8s.io/apimachinery/pkg/apis/meta/v1"

v1 "k8s.io/api/core/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/kubernetes/fake"
"k8s.io/client-go/kubernetes/scheme"
"k8s.io/client-go/tools/clientcmd"
"sigs.k8s.io/controller-runtime/pkg/client"
Expand Down Expand Up @@ -71,7 +73,7 @@ func (p *SecretProvider) K8sClientForRuntimeID(runtimeID string) (client.Client,
return k8sCli, nil
}

func (p *SecretProvider) K8sClientSetForRuntimeID(runtimeID string) (*kubernetes.Clientset, error) {
func (p *SecretProvider) K8sClientSetForRuntimeID(runtimeID string) (kubernetes.Interface, error) {
kubeconfig, err := p.KubeconfigForRuntimeID(runtimeID)
if err != nil {
return nil, err
Expand All @@ -91,11 +93,12 @@ func (p *SecretProvider) K8sClientSetForRuntimeID(runtimeID string) (*kubernetes
}

type FakeProvider struct {
c client.Client
c client.Client
clientset kubernetes.Interface
}

func NewFakeK8sClientProvider(c client.Client) *FakeProvider {
return &FakeProvider{c: c}
return &FakeProvider{c: c, clientset: createFakeClientset()}
}

func (p *FakeProvider) K8sClientForRuntimeID(_ string) (client.Client, error) {
Expand All @@ -106,9 +109,40 @@ func (p *FakeProvider) K8sClientForRuntimeID(_ string) (client.Client, error) {
}

func (p *FakeProvider) KubeconfigForRuntimeID(runtimeID string) ([]byte, error) {
return []byte("fake kubeconfig"), nil
return []byte(`
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: ca
server: https://my.cluster
name: <cluster-name>
contexts:
- context:
cluster: cname
user: cuser
name: cname
current-context: cname
kind: Config
preferences: {}
users:
- name: cuser
user:
token: some-token
`), nil
}

func (p *FakeProvider) K8sClientSetForRuntimeID(runtimeID string) (*kubernetes.Clientset, error) {
return nil, fmt.Errorf("not implemented")
func (p *FakeProvider) K8sClientSetForRuntimeID(runtimeID string) (kubernetes.Interface, error) {
return p.clientset, nil
}

func createFakeClientset() kubernetes.Interface {
c := fake.NewSimpleClientset()
_, err := c.CoreV1().Namespaces().Create(context.Background(), &v1.Namespace{
ObjectMeta: machineryv1.ObjectMeta{Name: "kyma-system", Namespace: ""},
}, machineryv1.CreateOptions{})
if err != nil {
// this method is used only for tests
panic(err)
}
return c
}

0 comments on commit def7eae

Please sign in to comment.