[Openstack-operators] Properties missing in Nova Scheduler Filter

Keller, Mario Mario.Keller at cornelsen.de
Thu Nov 10 07:05:19 UTC 2016


we are trying to build our own nova scheduler filter to separate machines to different compute nodes / host aggregates. 
Our setup is based on OpenStack Mitaka and we are using VMware as hypervisor on 3 different compute nodes.

We have created a /etc/glance/metadefs/CV_AggSelect.json file to define the new property "os_selectagg"

    "namespace": "OS::Compute::cv-host-agg", 
    "display_name": "CV-CUSTOM: Select Host Aggregate", 
    "description": "Cornelsen CUSTOM: Select Host Aggregate", 
    "visibility": "public", 
    "protected": true, 
    "resource_type_associations": [
            "name": "OS::Glance::Image" 
            "name": "OS::Nova::Aggregate" 
        "properties": {
            "os_selectagg": {
                "title": "selectagg",
                "description": "Cornelsen CUSTOM: Select Host Aggregate",
                "type": "string",
                "enum": [
                "default" : "test2"
    "objects": []

Getting the details from our image and the host aggregate we see that the property is set correctly:

openstack image show e62da4df-318f-48dc-be26-b634e82ec4a1
| Field            | Value                                                                                                                            |
| properties       | description='', hw_vif_model='VirtualVmxnet3', hypervisor_type='vmware', os_selectagg='windows',            |
|                  | vmware_adaptertype='lsiLogicsas', vmware_disktype='preallocated', vmware_ostype='windows9Server64Guest

We also see the property in the aggregate:

openstack aggregate show 5
| Field             | Value                                            |
| properties        | hypervisor_type='vmware', os_selectagg='windows' |

I have created a new simple filter in /usr/lib/python2.7/site-packages/nova/scheduler/filters  just to see what properties are set for the current image and the host_state.
The filter is also set in the  /etc/nova/nova.conf and is executed, because I'm getting the logfile that ist created by the filter.

The filter only implements the " def host_passes(self, host_state, spec_obj)" function.

I'm getting the image properties by " image_props = spec_obj.image.properties if spec_obj.image else {} ", but the property "os_selectagg" is missing. All other properties like hw_vif_model='VirtualVmxnet3' are set.

The property is set in the host_state.aggregates list, but not in the spec_obj.image.properties. What do we miss?

With best regards,
Mario Keller.

Mit freundlichen Grüßen
Mario Keller
IT-Operations Engineer
Cornelsen Verlag GmbH, Mecklenburgische Straße 53, 14197 Berlin
Tel: +49 30 897 85-8364, Fax: +49 30 897 85-97-8364
E-Mail: mario.keller at cornelsen.de | cornelsen.de

AG Charlottenburg, HRB 114796 B
Geschäftsführung: Dr. Anja Hagen, Joachim Herbst, Mark van Mierle (Vorsitz), 
Patrick Neiss, Michael von Smolinski, Frank Thalhofer

More information about the OpenStack-operators mailing list