Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SKR tester: networking test #1633

Merged
merged 1 commit into from
Jan 16, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 10 additions & 4 deletions testing/e2e/skr-tester/pkg/broker/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,9 @@ func (c *BrokerClient) CallBroker(payload interface{}, endpoint, verb string) (m
defer resp.Body.Close()

if resp.StatusCode != http.StatusOK && resp.StatusCode != http.StatusAccepted {
return nil, fmt.Errorf("error calling Broker: %s %s", resp.Status, resp.Status)
var result map[string]interface{}
json.NewDecoder(resp.Body).Decode(&result)
return result, fmt.Errorf("error calling Broker: %s %s", resp.Status, resp.Status)
}

var result map[string]interface{}
Expand Down Expand Up @@ -210,7 +212,7 @@ func (c *BrokerClient) GetCatalog() (map[string]interface{}, error) {
return c.CallBroker(nil, endpoint, "GET")
}

func (c *BrokerClient) BuildPayload(name, instanceID, planID, region string, btpOperatorCreds map[string]interface{}) map[string]interface{} {
func (c *BrokerClient) BuildPayload(name, instanceID, planID, region string, btpOperatorCreds, customParams map[string]interface{}) map[string]interface{} {
payload := map[string]interface{}{
"service_id": KymaServiceID,
"plan_id": planID,
Expand All @@ -224,6 +226,10 @@ func (c *BrokerClient) BuildPayload(name, instanceID, planID, region string, btp
},
}

for key, value := range customParams {
payload["parameters"].(map[string]interface{})[key] = value
}

if planID != trialPlanID {
payload["parameters"].(map[string]interface{})["region"] = region
}
Expand All @@ -240,8 +246,8 @@ func (c *BrokerClient) BuildPayload(name, instanceID, planID, region string, btp
return payload
}

func (c *BrokerClient) ProvisionInstance(instanceID, planID, region string, btpOperatorCreds map[string]interface{}) (map[string]interface{}, error) {
payload := c.BuildPayload(instanceID, instanceID, planID, region, btpOperatorCreds)
func (c *BrokerClient) ProvisionInstance(instanceID, planID, region string, btpOperatorCreds, customParams map[string]interface{}) (map[string]interface{}, error) {
payload := c.BuildPayload(instanceID, instanceID, planID, region, btpOperatorCreds, customParams)
endpoint := fmt.Sprintf("service_instances/%s", instanceID)
return c.CallBroker(payload, endpoint, "PUT")
}
Expand Down
58 changes: 46 additions & 12 deletions testing/e2e/skr-tester/pkg/command/provision.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package command
import (
"errors"
"fmt"
"strings"

broker "skr-tester/pkg/broker"
"skr-tester/pkg/logger"
Expand All @@ -12,10 +13,13 @@ import (
)

type ProvisionCommand struct {
cobraCmd *cobra.Command
log logger.Logger
planID string
region string
cobraCmd *cobra.Command
log logger.Logger
planID string
region string
overlapIP bool
invalidIP bool
validCustomIP bool
}

func NewProvisionCmd() *cobra.Command {
Expand All @@ -34,6 +38,9 @@ func NewProvisionCmd() *cobra.Command {

cobraCmd.Flags().StringVarP(&cmd.planID, "planID", "p", "", "PlanID of the specific instance.")
cobraCmd.Flags().StringVarP(&cmd.region, "region", "r", "", "Region of the specific instance.")
cobraCmd.Flags().BoolVarP(&cmd.overlapIP, "overlapIP", "o", false, "Try to provision with overlapping restricted IP range.")
cobraCmd.Flags().BoolVarP(&cmd.invalidIP, "invalidIP", "i", false, "Try to provision with invalid IP range.")
cobraCmd.Flags().BoolVarP(&cmd.validCustomIP, "validCustomIP", "v", false, "Try to provision with valid custom IP range.")

return cobraCmd
}
Expand All @@ -47,22 +54,49 @@ func (cmd *ProvisionCommand) Run() error {
"smURL": "dummy_url",
"url": "dummy_token_url",
}
customParams := map[string]interface{}{}
if cmd.overlapIP {
customParams = map[string]interface{}{
"networking": map[string]interface{}{
"nodes": "10.242.0.0/22",
},
}
} else if cmd.invalidIP {
customParams = map[string]interface{}{
"networking": map[string]interface{}{
"nodes": "333.242.0.0/22",
},
}
} else if cmd.validCustomIP {
customParams = map[string]interface{}{
"networking": map[string]interface{}{
"nodes": "10.253.0.0/21",
},
}
}
instanceID := uuid.New().String()
fmt.Printf("Instance ID: %s\n", instanceID)
resp, err := brokerClient.ProvisionInstance(instanceID, cmd.planID, cmd.region, dummyCreds)
resp, err := brokerClient.ProvisionInstance(instanceID, cmd.planID, cmd.region, dummyCreds, customParams)
if err != nil {
fmt.Printf("Error provisioning instance: %v\n", err)
} else {
fmt.Printf("Provision operationID: %s\n", resp["operation"].(string))
if cmd.overlapIP && strings.Contains(fmt.Sprintf("%v", resp), "overlap") && strings.Contains(fmt.Sprintf("%v", err), "400") {
fmt.Println("Provisioning failed due to overlapping IP range, which was expected.")
return nil
} else if cmd.invalidIP && strings.Contains(fmt.Sprintf("%v", resp), "invalid CIDR address") && strings.Contains(fmt.Sprintf("%v", err), "400") {
fmt.Println("Provisioning failed due to invalid CIDR address, which was expected.")
return nil
}
return err
}

fmt.Printf("Provision operationID: %s\n", resp["operation"].(string))
return nil
}

func (cmd *ProvisionCommand) Validate() error {
if cmd.planID != "" && cmd.region != "" {
return nil
} else {
if cmd.planID == "" || cmd.region == "" {
return errors.New("you must specify the planID and region")
}
if cmd.overlapIP && cmd.invalidIP {
return errors.New("you can only set one of overlapIP or invalidIP")
}
return nil
}
Loading