Skip to main content

Primary links

  • Home
  • AI
  • Kubernetes
  • Incus
  • Ansible
  • Terraform
  • OpenStack
  • Virtualization
  • Linux
  • SmartHome
  • HowTo

Misc

  • Linux
  • Hardware
  • Programming
  • Databases
  • Multimedia
  • Windows

Cloud

  • OpenStack
    • Application credentials
    • Authentificaton
    • Barbican (Secret)
    • CLI client (OSC)
    • Cleanup OpenStack
    • Cloud images
    • Designate (DNSaaS)
    • DevStack
    • Gerrit / OpenDev
    • Glance (image)
    • Heat
    • Horizon
    • Ironic / Bifrost
    • Magnum
    • MicroStack
    • Mistral
    • Neutron (network)
    • Object storage
    • Octavia (loadbalancer)
    • OpenStack GPU passthrough
    • OpenvSwitch (OVS)
    • Quota
    • RabbitMQ
    • VPN
    • block storage volume (cinder)
    • compute (nova)
    • control
    • diskimage-builder
    • flavor
    • gnocchi
    • kolla-ansible
    • project
    • resource provider
    • server (VM)
    • user
  • cloud-config
  • nextcloud

Virtualization

  • Virtualization
  • Incus
  • Docker
  • KVM
  • Kubernetes
  • LXC
  • LXD
  • QEMU
  • VMware
  • VirtualBox
  • multipass
  • podman
  • vagrant
  • XEN

Network

  • DNS
  • Firewall
  • Linux
  • OpenvSwitch
  • SSL
  • VLAN
  • VPN
  • iPXE
  • namespaces
  • nmcli
  • tcpdump

Storage

  • CEPH
  • DRBD
  • LVM
  • S3
  • ZFS
  • btrfs

Automation / CI/CD

  • Install
  • Ansible
  • GitLab
  • LLM
  • Preseed
  • Puppet
  • Terraform
  • Ubuntu autoinstall

Monitoring / Visualisation

  • Grafana
  • Icinga
  • Prometheus
  • Monitoring
  • ELK
  • mermaid
  • openstack

Install CLI client
https://docs.openstack.org/releasenotes/osc-placement/

pip install openstack-placement

echo 3.5.6 > .python-version

resource provider allocation

RESOURCE_PROVIDER_ID=$(openstack resource provider list --name ${NODE_NAME}.$(hostname -d) -c uuid -f value)
openstack resource provider show --allocations ${RESOURCE_PROVIDER_ID} -c allocations -f json


# list hypervisor
openstack resource provider list --sort-column name

# sow usage
openstack resource provider usage show ${RESOURCE_PROVIDER_ID}

# show
openstack resource provider allocation show ${SERVER_ID}



NODE_NAME=com1-prod.example.com
RESOURCE_PROVIDER_UUID=$(openstack resource provider list --name ${NODE_NAME} -c uuid -f value)
openstack resource provider inventory list ${RESOURCE_PROVIDER_UUID}
openstack resource provider usage show ${RESOURCE_PROVIDER_UUID}


openstack allocation candidate list --resource VCPU=32  --resource DISK_GB=120 --resource MEMORY_MB=4096 --member-of 3f0d0e40-6cf4-422d-a245-ceaffb0ac037

Add resource provider to aggregate

#Add compute node to AZ
openstack aggregate add host az1-aggregate comX-prod

# get resource provider ID
RESOURCE_PROVIDER_ID=$(openstack --os-placement-api-version=1.2 resource provider show XXXXXX-XXXX-XXXX-XXXX-XXXXXX -c uuid -f value)
echo ${RESOURCE_PROVIDER_ID}

# get aggregate ID
AGGREGATE_ID=$(openstack --os-compute-api-version=2.53 aggregate show XXX -c uuid -f value)
echo ${AGGREGATE_ID}

# Add resource provider to that aggregate
openstack --os-placement-api-version=1.2 resource provider aggregate set --aggregate ${AGGREGATE_ID} ${RESOURCE_PROVIDER_ID}

Check multiple / broken resource provider allocation

for SERVER_ID in $(openstack server list --all -c ID -f value); do
    HYPERVISOR_HOSTNAME=$(openstack server show ${SERVER_ID} -c OS-EXT-SRV-ATTR:hypervisor_hostname -f value)
    RESOURCE_PROVIDER=$(openstack resource provider allocation show ${SERVER_ID} -c resource_provider -f value)

    # openstack resource provider list -c uuid -c name -f value
    case ${RESOURCE_PROVIDER} in
        bcf1cfcc-0b97-43e1-bb09-1bfd64ebc4fa) RESOURCE_PROVIDER_NAME=com1-stage.example.com;;
        231bd9d5-be18-4466-9865-923f463cd378) RESOURCE_PROVIDER_NAME=com2-stage.example.com;;
        b9e37e4a-28cf-4f63-bcdd-6463a7828b04) RESOURCE_PROVIDER_NAME=com3-stage.example.com;;
    esac

    if [ "${HYPERVISOR_HOSTNAME}" != "${RESOURCE_PROVIDER_NAME}" ]; then
        echo "SERVER_ID: ${SERVER_ID}"
        echo "HYPERVISOR_HOSTNAME: ${HYPERVISOR_HOSTNAME}"
        echo "RESOURCE_PROVIDER_NAME: ${RESOURCE_PROVIDER_NAME}"
        echo
    fi
done

Remove double allocation

# get RESOURCE_PROVIDER_ID
openstack resource provider allocation show ${SERVER_ID} -c resource_provider

# delete specific allocation
openstack resource provider allocation unset --os-placement-api-version 1.28 --provider ${RESOURCE_PROVIDER_ID} ${SERVER_ID}

# delete all allocations
openstack resource provider allocation delete ${SERVER_ID}

Delete

openstack catalog list | grep placement
PLACEMENT_ENDPOINT=placement-endpoint-returned-by-previous-command

TOKEN=$(openstack token issue -f value -c id)

curl ${PLACEMENT_ENDPOINT}/resource_providers -H "x-auth-token: $TOKEN" | python -m json.tool

# show allocations
openstack resource provider list
RESOURCE_PROVIDER_UUID=f4984285-2562-4210-99d2-2ee5f72d968f
curl -s -H "X-Auth-Token: ${TOKEN}" "${PLACEMENT_ENDPOINT}/resource_providers/${RESOURCE_PROVIDER_UUID}/allocations" | python -m json.tool

openstack resource provider allocation delete 4044e24b-099b-444a-863a-f14c0287d85b

# remove resource provider
UUID=uuid-of-resource-provider-named-openstack
curl ${PLACEMENT_ENDPOINT}/resource_providers/$UUID -H "x-auth-token: $TOKEN" -X DELETE

Links
https://docs.openstack.org/osc-placement/latest/cli/index.html

Profiles GitHub StackOverflow LinkedIn Xing
Contact Imprint
© panticz 2026

Cookie-Einstellungen

Diese Website nutzt eingebettete Inhalte von Drittanbietern (z.B. YouTube, SoundCloud). Beim Laden dieser Inhalte werden Daten an die jeweiligen Anbieter übermittelt. Datenverarbeitungserklärung