Skip to content

Implement DisruptionReasons for IBM Cloud provider #439

@pfeifferj

Description

@pfeifferj

Summary

The DisruptionReasons() method in the IBM Cloud provider currently returns nil. Implementing IBM-specific disruption reasons will improve debugging and observability when nodes are disrupted.

Current State

In pkg/cloudprovider/cloudprovider.go, the method is not implemented:

func (c *CloudProvider) DisruptionReasons() []karpv1.DisruptionReason {
    // Not implemented
    return nil
}

Proposed Solution

Implement disruption reasons specific to IBM Cloud scenarios:

const (
    DisruptionReasonVPCQuotaExceeded    karpv1.DisruptionReason = "VPCQuotaExceeded"
    DisruptionReasonAPIRateLimited      karpv1.DisruptionReason = "APIRateLimited"
    DisruptionReasonInstanceTerminated  karpv1.DisruptionReason = "InstanceTerminated"
)

func (c *CloudProvider) DisruptionReasons() []karpv1.DisruptionReason {
    return []karpv1.DisruptionReason{
        DisruptionReasonVPCQuotaExceeded,
        DisruptionReasonAPIRateLimited,
        DisruptionReasonInstanceTerminated,
    }
}

Files to Modify

  • pkg/cloudprovider/cloudprovider.go - Add method implementation
  • pkg/cloudprovider/events/events.go - Add corresponding disruption events (optional)

Acceptance Criteria

  • Define IBM-specific disruption reason constants
  • Implement DisruptionReasons() to return the list
  • Add unit tests for the new implementation
  • Document each disruption reason with godoc comments

Reference

See AWS Karpenter provider for pattern: https://github.com/aws/karpenter-provider-aws/blob/main/pkg/cloudprovider/cloudprovider.go

Metadata

Metadata

Assignees

Labels

area/provider/ibmcloudIssues or PRs related to ibmcloud providergood first issueDenotes an issue ready for a new contributor, according to the "help wanted" guidelines.kind/featureCategorizes issue or PR as related to a new feature.performance & observabilityMaking things faster and more transparent

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions