Skip to content

Commit e7d2976

Browse files
Add drain pre and post hook and ProvisioningGeneration
PostDrainHooks and PreDrainHook fields are added to the DrainOptions. The pre drain hook will run after cordon but before drain. The post drain hook will run after the node has been updated (for example upgrading rke2) but before the node is uncordoned.
1 parent 7892720 commit e7d2976

File tree

15 files changed

+335
-72
lines changed

15 files changed

+335
-72
lines changed

pkg/apis/catalog.cattle.io/v1/zz_generated_deepcopy.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/cluster.cattle.io/v3/zz_generated_deepcopy.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/management.cattle.io/v3/zz_generated_deepcopy.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/project.cattle.io/v3/zz_generated_deepcopy.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/provisioning.cattle.io/v1/zz_generated_deepcopy.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/rke.cattle.io/v1/cluster.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ type RKEClusterSpecCommon struct {
2929
AdditionalManifest string `json:"additionalManifest,omitempty"`
3030
Registries *Registry `json:"registries,omitempty"`
3131
ETCD *ETCD `json:"etcd,omitempty"`
32+
// Increment to force all nodes to re-provision
33+
ProvisionGeneration int `json:"provisionGeneration,omitempty"`
3234
}
3335

3436
type LocalClusterAuthEndpoint struct {
@@ -80,6 +82,18 @@ type DrainOptions struct {
8082
Timeout int `json:"timeout"`
8183
// SkipWaitForDeleteTimeoutSeconds If pod DeletionTimestamp older than N seconds, skip waiting for the pod. Seconds must be greater than 0 to skip.
8284
SkipWaitForDeleteTimeoutSeconds int `json:"skipWaitForDeleteTimeoutSeconds,omitempty"`
85+
86+
// PreDrainHooks A list of hooks to run prior to draining a node
87+
PreDrainHooks []DrainHook `json:"preDrainHooks,omitempty"`
88+
// PostDrainHook A list of hooks to run after draining AND UPDATING a node
89+
PostDrainHooks []DrainHook `json:"postDrainHooks,omitempty"`
90+
}
91+
92+
type DrainHook struct {
93+
// Annotation This annotation will need to be populated on the capi.Machine with the value from the annotation
94+
// "rke.cattle.io/pre-drain" before the planner will continue with drain the specific node. The annotation
95+
// "rke.cattle.io/pre-drain" is used for pre-drain and "rke.cattle.io/post-drain" is used for post drain.
96+
Annotation string `json:"annotation,omitempty"`
8397
}
8498

8599
type Endpoint struct {

pkg/apis/rke.cattle.io/v1/zz_generated_deepcopy.go

Lines changed: 26 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/ui.cattle.io/v1/zz_generated_deepcopy.go

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/client/generated/management/v3/zz_generated_cloud_provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ const (
55
CloudProviderFieldAWSCloudProvider = "awsCloudProvider"
66
CloudProviderFieldAzureCloudProvider = "azureCloudProvider"
77
CloudProviderFieldCustomCloudProvider = "customCloudProvider"
8+
CloudProviderFieldHarvesterCloudProvider = "harvesterCloudProvider"
89
CloudProviderFieldName = "name"
910
CloudProviderFieldOpenstackCloudProvider = "openstackCloudProvider"
1011
CloudProviderFieldVsphereCloudProvider = "vsphereCloudProvider"
@@ -14,6 +15,7 @@ type CloudProvider struct {
1415
AWSCloudProvider *AWSCloudProvider `json:"awsCloudProvider,omitempty" yaml:"awsCloudProvider,omitempty"`
1516
AzureCloudProvider *AzureCloudProvider `json:"azureCloudProvider,omitempty" yaml:"azureCloudProvider,omitempty"`
1617
CustomCloudProvider string `json:"customCloudProvider,omitempty" yaml:"customCloudProvider,omitempty"`
18+
HarvesterCloudProvider *HarvesterCloudProvider `json:"harvesterCloudProvider,omitempty" yaml:"harvesterCloudProvider,omitempty"`
1719
Name string `json:"name,omitempty" yaml:"name,omitempty"`
1820
OpenstackCloudProvider *OpenstackCloudProvider `json:"openstackCloudProvider,omitempty" yaml:"openstackCloudProvider,omitempty"`
1921
VsphereCloudProvider *VsphereCloudProvider `json:"vsphereCloudProvider,omitempty" yaml:"vsphereCloudProvider,omitempty"`
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package client
2+
3+
const (
4+
HarvesterCloudProviderType = "harvesterCloudProvider"
5+
HarvesterCloudProviderFieldCloudConfig = "cloudConfig"
6+
)
7+
8+
type HarvesterCloudProvider struct {
9+
CloudConfig string `json:"cloudConfig,omitempty" yaml:"cloudConfig,omitempty"`
10+
}

0 commit comments

Comments
 (0)