Skip to content
Open
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
38 changes: 35 additions & 3 deletions test/upgrade/installation/serverless.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,10 @@ const (
)

func UpgradeServerlessTo(ctx *test.Context, csv, source string, timeout time.Duration) error {
ctx.T.Logf("πŸ”„ Starting Serverless upgrade to CSV: %s (source: %s, channel: %s)", csv, source, test.Flags.UpgradeChannel)
ctx.T.Logf(" Target versions - Serving: %s, Eventing: %s, Kafka: %s",
test.Flags.ServingVersion, test.Flags.EventingVersion, test.Flags.KafkaVersion)

if _, err := test.UpdateSubscriptionChannelSource(ctx, test.Flags.Subscription, test.Flags.UpgradeChannel, source); err != nil {
return err
}
Expand All @@ -39,51 +43,66 @@ func UpgradeServerlessTo(ctx *test.Context, csv, source string, timeout time.Dur
}
}

ctx.T.Logf(" Approving InstallPlan: %s", installPlan.Name)
if err := test.ApproveInstallPlan(ctx, installPlan.Name); err != nil {
return err
}
if _, err := test.WaitForClusterServiceVersionState(ctx, csv, test.OperatorsNamespace, test.IsCSVSucceeded); err != nil {
return err
}
ctx.T.Logf("βœ… CSV %s is now in Succeeded state", csv)

servingInStateFunc := v1beta1.IsKnativeServingWithVersionReady(strings.TrimPrefix(test.Flags.ServingVersion, "v"))
servingVersion := strings.TrimPrefix(test.Flags.ServingVersion, "v")
servingInStateFunc := v1beta1.IsKnativeServingWithVersionReady(servingVersion)
if len(test.Flags.ServingVersion) == 0 {
servingInStateFunc = v1beta1.IsKnativeServingReady
servingVersion = "<latest>"
}
knativeServing := test.ServingNamespace
ctx.T.Logf(" Waiting for KnativeServing to reach version: %s", servingVersion)
if _, err := v1beta1.WaitForKnativeServingState(ctx,
knativeServing,
knativeServing,
servingInStateFunc,
); err != nil {
return fmt.Errorf("serving upgrade failed: %w", err)
}
ctx.T.Logf("βœ… KnativeServing is now at version: %s", servingVersion)

eventingInStateFunc := v1beta1.IsKnativeEventingWithVersionReady(strings.TrimPrefix(test.Flags.EventingVersion, "v"))
eventingVersion := strings.TrimPrefix(test.Flags.EventingVersion, "v")
eventingInStateFunc := v1beta1.IsKnativeEventingWithVersionReady(eventingVersion)
if len(test.Flags.EventingVersion) == 0 {
eventingInStateFunc = v1beta1.IsKnativeEventingReady
eventingVersion = "<latest>"
}
knativeEventing := test.EventingNamespace
ctx.T.Logf(" Waiting for KnativeEventing to reach version: %s", eventingVersion)
if _, err := v1beta1.WaitForKnativeEventingState(ctx,
knativeEventing,
knativeEventing,
eventingInStateFunc,
); err != nil {
return fmt.Errorf("eventing upgrade failed: %w", err)
}
ctx.T.Logf("βœ… KnativeEventing is now at version: %s", eventingVersion)

kafkaInStateFunc := v1alpha1.IsKnativeKafkaWithVersionReady(strings.TrimPrefix(test.Flags.KafkaVersion, "v"))
kafkaVersion := strings.TrimPrefix(test.Flags.KafkaVersion, "v")
kafkaInStateFunc := v1alpha1.IsKnativeKafkaWithVersionReady(kafkaVersion)
if len(test.Flags.KafkaVersion) == 0 {
kafkaInStateFunc = v1alpha1.IsKnativeKafkaReady
kafkaVersion = "<latest>"
}
ctx.T.Logf(" Waiting for KnativeKafka to reach version: %s", kafkaVersion)
if _, err := v1alpha1.WaitForKnativeKafkaState(ctx,
"knative-kafka",
knativeEventing,
kafkaInStateFunc,
); err != nil {
return fmt.Errorf("knative kafka upgrade failed: %w", err)
}
ctx.T.Logf("βœ… KnativeKafka is now at version: %s", kafkaVersion)

ctx.T.Logf("βœ… Serverless upgrade completed successfully to CSV: %s", csv)
return nil
}

Expand All @@ -94,6 +113,10 @@ func UpgradeServerless(ctx *test.Context) error {
func DowngradeServerless(ctx *test.Context) error {
const subscription = "serverless-operator"

ctx.T.Logf("πŸ”„ Starting Serverless downgrade to CSV: %s", test.Flags.CSVPrevious)
ctx.T.Logf(" Target versions - Serving: %s, Eventing: %s, Kafka: %s",
test.Flags.ServingVersionPrevious, test.Flags.EventingVersionPrevious, test.Flags.KafkaVersionPrevious)

if err := test.DeleteSubscription(ctx, subscription, test.OperatorsNamespace); err != nil {
return err
}
Expand Down Expand Up @@ -128,45 +151,54 @@ func DowngradeServerless(ctx *test.Context) error {
return err
}

ctx.T.Logf(" Approving InstallPlan: %s", installPlan.Name)
if err := test.ApproveInstallPlan(ctx, installPlan.Name); err != nil {
return err
}

if _, err := test.WaitForClusterServiceVersionState(ctx, test.Flags.CSVPrevious, test.OperatorsNamespace, test.IsCSVSucceeded); err != nil {
return err
}
ctx.T.Logf("βœ… CSV %s is now in Succeeded state", test.Flags.CSVPrevious)

knativeServing := test.ServingNamespace
servingVersion := strings.TrimPrefix(test.Flags.ServingVersionPrevious, "v")
servingInStateFunc := v1beta1.IsKnativeServingWithVersionReady(servingVersion)
ctx.T.Logf(" Waiting for KnativeServing to reach version: %s", servingVersion)
if _, err := v1beta1.WaitForKnativeServingState(ctx,
knativeServing,
knativeServing,
servingInStateFunc,
); err != nil {
return fmt.Errorf("expected ready KnativeServing at version %s: %w", servingVersion, err)
}
ctx.T.Logf("βœ… KnativeServing is now at version: %s", servingVersion)

knativeEventing := test.EventingNamespace
eventingVersion := strings.TrimPrefix(test.Flags.EventingVersionPrevious, "v")
eventingInStateFunc := v1beta1.IsKnativeEventingWithVersionReady(eventingVersion)
ctx.T.Logf(" Waiting for KnativeEventing to reach version: %s", eventingVersion)
if _, err := v1beta1.WaitForKnativeEventingState(ctx,
knativeEventing,
knativeEventing,
eventingInStateFunc,
); err != nil {
return fmt.Errorf("expected ready KnativeEventing at version %s: %w", eventingVersion, err)
}
ctx.T.Logf("βœ… KnativeEventing is now at version: %s", eventingVersion)

knativeKafkaVersion := strings.TrimPrefix(test.Flags.KafkaVersionPrevious, "v")
kafkaInStateFunc := v1alpha1.IsKnativeKafkaWithVersionReady(knativeKafkaVersion)
ctx.T.Logf(" Waiting for KnativeKafka to reach version: %s", knativeKafkaVersion)
if _, err := v1alpha1.WaitForKnativeKafkaState(ctx,
"knative-kafka",
knativeEventing,
kafkaInStateFunc,
); err != nil {
return fmt.Errorf("expected ready KnativeKafka at version %s: %w", knativeKafkaVersion, err)
}
ctx.T.Logf("βœ… KnativeKafka is now at version: %s", knativeKafkaVersion)

ctx.T.Logf("βœ… Serverless downgrade completed successfully to CSV: %s", test.Flags.CSVPrevious)
return nil
}
Loading