Skip to content

Commit fe0c054

Browse files
committed
fix #24
1 parent 6d40279 commit fe0c054

File tree

6 files changed

+43
-36
lines changed

6 files changed

+43
-36
lines changed

api/v1beta1/type.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,23 +17,22 @@ type ServerRef struct {
1717

1818
// to do : client options like insecure tls verify
1919

20-
// CredentialsRef is a reference for secret which contains proxmox login secrets
20+
// SecretRef is a reference for secret which contains proxmox login secrets
2121
// and ssh configs for proxmox nodes
22-
CredentialsRef *ObjectReference `json:"credentialsRef"`
22+
SecretRef *ObjectReference `json:"secretRef"`
2323
}
2424

2525
// NodeRef
2626
type NodeRef struct {
27-
Name string `json:"name"`
28-
CredentialsRef *ObjectReference `json:"credentialsRef"`
27+
Name string `json:"name"`
28+
SecretRef *ObjectReference `json:"secretRef"`
2929
}
3030

3131
// ObjectReference is a reference to another Kubernetes object instance.
3232
type ObjectReference struct {
3333
// Namespace of the referent.
3434
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/
35-
// +kubebuilder:validation:Required
36-
Namespace string `json:"namespace"`
35+
Namespace string `json:"namespace,omitempty"`
3736
// Name of the referent.
3837
// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
3938
// +kubebuilder:validation:Required

api/v1beta1/zz_generated.deepcopy.go

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

cloud/scope/clients.go

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ type ProxmoxServices struct {
3333
}
3434

3535
func newComputeService(ctx context.Context, serverRef infrav1.ServerRef, crClient client.Client) (*service.Service, error) {
36-
credentialsRef := serverRef.CredentialsRef
37-
if credentialsRef == nil {
38-
return nil, errors.New("failed to get proxmox client form nil credentialsRef")
36+
secretRef := serverRef.SecretRef
37+
if secretRef == nil {
38+
return nil, errors.New("failed to get proxmox client form nil secretRef")
3939
}
4040

4141
var secret corev1.Secret
42-
key := client.ObjectKey{Namespace: credentialsRef.Namespace, Name: credentialsRef.Name}
42+
key := client.ObjectKey{Namespace: secretRef.Namespace, Name: secretRef.Name}
4343
if err := crClient.Get(ctx, key, &secret); err != nil {
4444
return nil, err
4545
}
@@ -56,13 +56,13 @@ func newComputeService(ctx context.Context, serverRef infrav1.ServerRef, crClien
5656
return service.NewServiceWithLogin(serverRef.Endpoint, string(proxmoxUser), string(proxmoxPassword))
5757
}
5858

59-
func newRemoteClient(ctx context.Context, credentialsRef *infrav1.ObjectReference, crClient client.Client) (*SSHClient, error) {
60-
if credentialsRef == nil {
61-
return nil, errors.New("failed to get proxmox client form nil credentialsRef")
59+
func newRemoteClient(ctx context.Context, secretRef *infrav1.ObjectReference, crClient client.Client) (*SSHClient, error) {
60+
if secretRef == nil {
61+
return nil, errors.New("failed to get proxmox client form nil secretRef")
6262
}
6363

6464
var secret corev1.Secret
65-
key := client.ObjectKey{Namespace: credentialsRef.Namespace, Name: credentialsRef.Name}
65+
key := client.ObjectKey{Namespace: secretRef.Namespace, Name: secretRef.Name}
6666
if err := crClient.Get(ctx, key, &secret); err != nil {
6767
return nil, err
6868
}

cloud/scope/cluster.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ func NewClusterScope(ctx context.Context, params ClusterScopeParams) (*ClusterSc
4242
if params.ProxmoxCluster == nil {
4343
return nil, errors.New("failed to generate new scope from nil ProxmoxCluster")
4444
}
45+
populateNamespace(params.ProxmoxCluster)
4546

4647
if params.ProxmoxServices.Compute == nil {
4748
computeSvc, err := newComputeService(ctx, params.ProxmoxCluster.Spec.ServerRef, params.Client)
@@ -53,7 +54,7 @@ func NewClusterScope(ctx context.Context, params ClusterScopeParams) (*ClusterSc
5354

5455
if params.ProxmoxServices.Remote == nil {
5556
// current CAPP is compatible with only single node proxmox cluster
56-
remote, err := newRemoteClient(ctx, params.ProxmoxCluster.Spec.NodeRefs[0].CredentialsRef, params.Client)
57+
remote, err := newRemoteClient(ctx, params.ProxmoxCluster.Spec.NodeRefs[0].SecretRef, params.Client)
5758
if err != nil {
5859
return nil, errors.Errorf("failed to create remote client: %v", err)
5960
}
@@ -74,6 +75,17 @@ func NewClusterScope(ctx context.Context, params ClusterScopeParams) (*ClusterSc
7475
}, err
7576
}
7677

78+
func populateNamespace(proxmoxCluster *infrav1.ProxmoxCluster) {
79+
if proxmoxCluster.Spec.ServerRef.SecretRef.Namespace == "" {
80+
proxmoxCluster.Spec.ServerRef.SecretRef.Namespace = proxmoxCluster.Namespace
81+
}
82+
for i, nodeRef := range proxmoxCluster.Spec.NodeRefs {
83+
if nodeRef.SecretRef.Namespace == "" {
84+
proxmoxCluster.Spec.NodeRefs[i].SecretRef.Namespace = proxmoxCluster.Namespace
85+
}
86+
}
87+
}
88+
7789
type ClusterScope struct {
7890
ProxmoxServices
7991
client client.Client

config/crd/bases/infrastructure.cluster.x-k8s.io_proxmoxclusters.yaml

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,9 @@ spec:
7272
items:
7373
description: NodeRef
7474
properties:
75-
credentialsRef:
75+
name:
76+
type: string
77+
secretRef:
7678
description: ObjectReference is a reference to another Kubernetes
7779
object instance.
7880
properties:
@@ -84,20 +86,21 @@ spec:
8486
type: string
8587
required:
8688
- name
87-
- namespace
8889
type: object
89-
name:
90-
type: string
9190
required:
92-
- credentialsRef
9391
- name
92+
- secretRef
9493
type: object
9594
type: array
9695
serverRef:
9796
description: ServerRef is used for configuring Proxmox client
9897
properties:
99-
credentialsRef:
100-
description: CredentialsRef is a reference for secret which contains
98+
endpoint:
99+
description: endpoint is the address of the Proxmox-VE REST API
100+
endpoint.
101+
type: string
102+
secretRef:
103+
description: SecretRef is a reference for secret which contains
101104
proxmox login secrets and ssh configs for proxmox nodes
102105
properties:
103106
name:
@@ -108,15 +111,10 @@ spec:
108111
type: string
109112
required:
110113
- name
111-
- namespace
112114
type: object
113-
endpoint:
114-
description: endpoint is the address of the Proxmox-VE REST API
115-
endpoint.
116-
type: string
117115
required:
118-
- credentialsRef
119116
- endpoint
117+
- secretRef
120118
type: object
121119
storage:
122120
description: storage is for proxmox storage used by vm instances

config/samples/infrastructure_v1beta1_proxmoxcluster.yaml

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,12 @@ spec:
1414
port: 6443
1515
serverRef:
1616
endpoint: 192.168.1.157:8006 # your proxmox api endpoint
17-
credentialsRef:
17+
secretRef:
1818
name: proxmoxcluster-sample
19-
namespace: default
2019
nodeRefs:
2120
- name: mynode
22-
credentialsRef:
21+
secretRef:
2322
name: proxmoxcluster-sample
24-
namespace: default
2523
storage:
2624
name: proxmoxcluster-sample
2725
path: ""

0 commit comments

Comments
 (0)