Skip to content

Commit bf823ba

Browse files
committed
refactor: move to operator
Following the upstream project, we moved all initialization to the operator module. Signed-off-by: Serge Logvinov <[email protected]>
1 parent bf30a99 commit bf823ba

File tree

4 files changed

+48
-30
lines changed

4 files changed

+48
-30
lines changed

cmd/controller/main.go

Lines changed: 1 addition & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,9 @@ limitations under the License.
1818
package main
1919

2020
import (
21-
"os"
22-
2321
proxmox "github.com/sergelogvinov/karpenter-provider-proxmox/pkg/cloudprovider"
2422
"github.com/sergelogvinov/karpenter-provider-proxmox/pkg/controllers"
2523
"github.com/sergelogvinov/karpenter-provider-proxmox/pkg/operator"
26-
"github.com/sergelogvinov/karpenter-provider-proxmox/pkg/providers/cloudcapacity"
27-
"github.com/sergelogvinov/karpenter-provider-proxmox/pkg/providers/instance"
2824

2925
"sigs.k8s.io/karpenter/pkg/cloudprovider/metrics"
3026
corecontrollers "sigs.k8s.io/karpenter/pkg/controllers"
@@ -38,30 +34,8 @@ func main() {
3834

3935
log.Info("Karpenter Proxmox Provider version", "version", coreoperator.Version)
4036

41-
cloudcapacityProvider, err := cloudcapacity.NewProvider(ctx)
42-
if err != nil {
43-
log.Error(err, "failed creating instance provider")
44-
45-
os.Exit(1)
46-
}
47-
48-
cloudcapacityProvider.Sync(ctx)
49-
50-
instanceTypes, err := proxmox.ConstructInstanceTypes(ctx, cloudcapacityProvider)
51-
if err != nil {
52-
log.Error(err, "failed constructing instance types")
53-
54-
os.Exit(1)
55-
}
56-
57-
instanceProvider, err := instance.NewProvider(ctx, cloudcapacityProvider)
58-
if err != nil {
59-
log.Error(err, "failed creating instance provider")
60-
61-
os.Exit(1)
62-
}
37+
proxmoxCloudProvider := proxmox.NewCloudProvider(ctx, op.GetClient(), op.InstanceTypes, op.InstanceProvider, op.CapacityProvider)
6338

64-
proxmoxCloudProvider := proxmox.NewCloudProvider(ctx, op.GetClient(), instanceTypes, instanceProvider, cloudcapacityProvider)
6539
cloudProvider := metrics.Decorate(proxmoxCloudProvider)
6640
clusterState := state.NewCluster(op.Clock, op.GetClient(), cloudProvider)
6741

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ require (
1111
github.com/samber/lo v1.51.0
1212
github.com/sergelogvinov/proxmox-cloud-controller-manager v0.10.0
1313
github.com/stretchr/testify v1.10.0
14+
go.uber.org/multierr v1.11.0
1415
gopkg.in/yaml.v3 v3.0.1
1516
k8s.io/api v0.33.3
1617
k8s.io/apimachinery v0.33.3
@@ -56,7 +57,6 @@ require (
5657
github.com/spf13/cobra v1.9.1 // indirect
5758
github.com/spf13/pflag v1.0.7 // indirect
5859
github.com/x448/float16 v0.8.4 // indirect
59-
go.uber.org/multierr v1.11.0 // indirect
6060
go.uber.org/zap v1.27.0 // indirect
6161
go.yaml.in/yaml/v2 v2.4.2 // indirect
6262
golang.org/x/crypto v0.40.0 // indirect

pkg/operator/operator.go

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,15 @@ package operator
1818

1919
import (
2020
"context"
21+
"os"
2122

23+
proxmox "github.com/sergelogvinov/karpenter-provider-proxmox/pkg/cloudprovider"
2224
"github.com/sergelogvinov/karpenter-provider-proxmox/pkg/operator/options"
25+
"github.com/sergelogvinov/karpenter-provider-proxmox/pkg/providers/cloudcapacity"
26+
"github.com/sergelogvinov/karpenter-provider-proxmox/pkg/providers/instance"
2327

2428
"sigs.k8s.io/controller-runtime/pkg/log"
29+
"sigs.k8s.io/karpenter/pkg/cloudprovider"
2530
"sigs.k8s.io/karpenter/pkg/operator"
2631
)
2732

@@ -30,12 +35,43 @@ func init() {
3035

3136
type Operator struct {
3237
*operator.Operator
38+
39+
CapacityProvider *cloudcapacity.Provider
40+
// InstanceTypeProvider *[]cloudprovider.InstanceType
41+
InstanceProvider *instance.Provider
42+
InstanceTypes []*cloudprovider.InstanceType
3343
}
3444

3545
func NewOperator(ctx context.Context, operator *operator.Operator) (context.Context, *Operator) {
3646
log.FromContext(ctx).Info("Initializing Karpenter Proxmox Provider Operator", "cloud-config", options.FromContext(ctx).CloudConfigPath)
3747

48+
cloudcapacityProvider, err := cloudcapacity.NewProvider(ctx)
49+
if err != nil {
50+
log.FromContext(ctx).Error(err, "failed creating cloud capacity provider")
51+
52+
os.Exit(1)
53+
}
54+
55+
cloudcapacityProvider.Sync(ctx)
56+
57+
instanceTypes, err := proxmox.ConstructInstanceTypes(ctx, cloudcapacityProvider)
58+
if err != nil {
59+
log.FromContext(ctx).Error(err, "failed constructing instance types")
60+
61+
os.Exit(1)
62+
}
63+
64+
instanceProvider, err := instance.NewProvider(ctx, cloudcapacityProvider)
65+
if err != nil {
66+
log.FromContext(ctx).Error(err, "failed creating instance provider")
67+
68+
os.Exit(1)
69+
}
70+
3871
return ctx, &Operator{
39-
Operator: operator,
72+
Operator: operator,
73+
CapacityProvider: cloudcapacityProvider,
74+
InstanceTypes: instanceTypes,
75+
InstanceProvider: instanceProvider,
4076
}
4177
}

pkg/providers/instance/instance.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,12 @@ func (p *Provider) Get(ctx context.Context, providerID string) (*corev1.Node, er
251251

252252
vmInfo, err := cl.GetVmInfo(ctx, vmr)
253253
if err != nil {
254+
if strings.Contains(err.Error(), "not found") {
255+
log.FromContext(ctx).Error(err, "vm is not found")
256+
257+
return nil, cloudprovider.NewNodeClaimNotFoundError(fmt.Errorf("instance not found: %w", err))
258+
}
259+
254260
return nil, fmt.Errorf("failed to get vm: %v", err)
255261
}
256262

@@ -292,7 +298,9 @@ func (p *Provider) Delete(ctx context.Context, nodeClaim *karpv1.NodeClaim) erro
292298

293299
if _, err := cl.GetVmInfo(ctx, vmr); err != nil {
294300
if strings.Contains(err.Error(), "not found") {
295-
return nil
301+
log.FromContext(ctx).Error(err, "vm is not found")
302+
303+
return cloudprovider.NewNodeClaimNotFoundError(fmt.Errorf("instance not found: %w", err))
296304
}
297305

298306
return fmt.Errorf("failed to get vm %d: %v", vmr.VmId(), err)

0 commit comments

Comments
 (0)