apache / apache/cloudstack

Proxmox extension in CloudStack 4.22.0.0 fails to create primary storage with Missing required fields: url user token secret node

オープン
#12,816 コメント 2 件 リアクション 1 件 担当者 0 名 GitHub で見る
component:plugin component:primary-storage Severity:Major type:bug
主要言語
Java
スター
3.1k
フォーク
1.4k
平均マージ
6日 19時間
マージ済み PR(30日)
32

説明

### problem

I am testing the in-built Proxmox orchestrator extension in Apache CloudStack 4.22.0.0.

My Proxmox hosts are added successfully and appear Up/Enabled in CloudStack.
I can also authenticate to the Proxmox API successfully from the CloudStack management server using the documented token test.

Image

Image

Image

CloudStack docs also note that extension-backed hosts report zero CPU and memory capacity by design, so the 0 CPU / 0 memory shown in the UI is expected and not the main issue.

However, adding Primary Storage to the Proxmox cluster fails consistently with:

Failed to add data store: Can not create storage pool through host Host {...}
due to Exit code: 1, Output:
{"error":"Missing required fields: url user token secret node"}

Because primary storage never reaches the Up state, subsequent VM deployments fail with:

No destination found for a deployment

This aligns with CloudStack not having usable primary storage for the cluster. The CloudStack docs describe primary storage as required storage used for VM and disk placement, and the Proxmox extension docs describe the built-in Proxmox extension, host configuration details, and token validation flow.

I also found what appears to be a logic issue in the shipped Proxmox extension script:
/usr/share/cloudstack-management/extensions/Proxmox/proxmox.sh

The script globally validates required fields inside parse_json() before operation-specific logic runs. Initially it required:

check_required_fields vm_internal_name url user token secret node

which caused createStoragePool to fail because vm_internal_name is a VM field, not a storage-pool field. After patching that line to remove vm_internal_name, the error still remains as:

{"error":"Missing required fields: url user token secret node"}

This suggests the createStoragePool payload is not receiving host/extension configuration details, or the built-in Proxmox extension does not correctly support the primary storage path in this version.

There is already a related upstream issue about Proxmox VMs in CloudStack 4.22 not being able to acquire additional disks because primary storage is not available, which may be related. of your problem

### versions

Versions
- Apache CloudStack: 4.22.0.0
- Proxmox VE: 9.0.3
- CloudStack management server OS: Ubuntu 24.04.4 LTS
- Kernel on management server: 6.8.0-101-generic
- Proxmox extension: built-in Proxmox orchestrator extension shipped with CloudStack 4.22.0.0
- Primary storage backend tested: NFS shared storage

Infra:

- Infrastructure / Setup
- CloudStack management server deployed on Ubuntu 24
- CloudStack using built-in Proxmox orchestrator extension
- Proxmox cluster with 3 nodes added as external/orchestrator-backed hosts, proxmox cluster has a shared FC Storage
- NFS server deployed separately as a VM, reachable from both CloudStack and Proxmox
- Shared NFS export:
- Server: 10.11.101.130
- Export path: /srv/cloudstack-primary
- Proxmox API token authentication validated from the CloudStack management server using the documented curl command and returned valid JSON from /api2/json/version
- NFS export is reachable and visible via showmount -e
- NFS storage was also added successfully on the Proxmox side

### The steps to reproduce the bug

Steps to reproduce

Install Apache CloudStack 4.22.0.0.
Enable/use the built-in Proxmox orchestrator extension.
Add Proxmox hosts with configuration details:

url
user
token
secret
node
network_bridge

Confirm hosts show Up/Enabled in CloudStack.

Validate Proxmox API token from the CloudStack management server using:

export PVE_TOKEN='root@pam!='
curl -s -k -H "Authorization: PVEAPIToken=$PVE_TOKEN" https://:8006/api2/json/version | jq

Create an NFS export and verify it is reachable.

In CloudStack UI, go to Primary Storage and try to add NFS primary storage to the Proxmox cluster:

Protocol: nfs
Server: 10.11.101.130
Path: /srv/cloudstack-primary
Observe failure:

{"error":"Missing required fields: url user token secret node"}

Attempt to deploy a VM afterward.
Observe deployment failure:
No destination found for a deployment

Relevant observations

Hosts linked to the Proxmox extension show 0 CPU / 0 memory in CloudStack, which matches documented behavior for orchestrator extension-backed hosts.

Proxmox API auth is working.
NFS connectivity is working.
Primary storage never becomes Up in CloudStack.
management-server.log contains:
Failed to add data store: Can not create storage pool through host Host {...}
due to Exit code: 1, Output: {"error":"Missing required fields: url user token secret node"}

management-server.log also shows:

Skip capacity scan as there is no Primary Storage in 'Up' state

Relevant script snippet

From:
/usr/share/cloudstack-management/extensions/Proxmox/proxmox.sh

parse_json() {
...
url="${host_url:-$extension_url}"
user="${host_user:-$extension_user}"
token="${host_token:-$extension_token}"
secret="${host_secret:-$extension_secret}"

check_required_fields url user token secret node
}

This still fails during createStoragePool, which suggests the payload for that action may not include the expected externaldetails.host / externaldetails.extension data.z

### What to do about it?

What to do about it?

Please confirm whether:

- createStoragePool is currently supported for the built-in Proxmox extension in 4.22.0.0
- the createStoragePool payload is expected to contain host/extension configuration details
- this is a known issue in 4.22.0.0 and whether it is fixed in a later 4.22.x release
- This may be related to existing Proxmox primary storage issues in the 4.22 line.

Screenshots:
Primary Storage add dialog and error toast

Image

curl API key

Image

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

/usr/share/cloudstack-management/extensions/Proxmox/proxmox.sh から始め、特に parse_json() と createStoragePool パスを確認してから、issue に記載されている management-server.log のエラーを確認します。記載されているホスト設定と NFS ストレージの手順を使って失敗を再現します。ストレージプールが正常に作成され、Up 状態になり、関連するデプロイメントの失敗が発生しなくなれば完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
shell
領域
cloud, infrastructure
issue の種類
バグ
難易度
4/5
見積もり時間
3〜5日
活発さ
静か
明瞭さ
おおむね明確
初心者へのやさしさ
45/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。