← Back to team overview

openstack team mailing list archive

Re: Cannot pass hint to Nova Scheduler

 

Sorry for top-posting, but there's not really a good place to inline
comment.

First, let's tackle logging in devstack...

When using devstack, you noticed that it logs to the screen session by
default. To make devstack ALSO log to a file, put the following in your
localrc:

LOG_COLOR=False
SCREEN_LOGDIR=/opt/stack/logs

And re-run stack.sh. You will now find the various service log files in
/opt/stack/logs.

Second, let's handle the JSON issue...

Nova isn't trying to decode a file. It's trying to JSON-decode the
string you're putting on the command line:

--hint query=['>=','$free_ram_mb',1024]

The novaclient is passing the string "['>=','$free_ram_mb',1024]" to the
jsonutils.loads() function, which is what is failing. You can try
parsing this string yourself and see that the failure is raised the same
as appears in the log:

jpipes@uberbox:~/repos/tempest$ python
Python 2.7.3 (default, Apr 20 2012, 22:39:59)
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import json
>>> p = json.loads("['>=','$free_ram_mb',1024]")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
    raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

The problem is the string needs to be properly formatted JSON, and
single-quotes are not allowed -- you need to use double-quotes:

>>> p = json.loads('[">=","$free_ram_mb",1024]')
>>> print p
[u'>=', u'$free_ram_mb', 1024]

Try your command like this instead:

nova --debug boot --image 827d564a-e636-4fc4-a376-d36f7ebe1747 --flavor
1 --hint query='[">=","$free_ram_mb",1024]' server1

And I think you should be fine, as the following proof shows:

jpipes@uberbox:~/repos/tempest$ echo '[">=","$free_ram_mb",1024]' |
python -mjson.tool
[
    ">=",
    "$free_ram_mb",
    1024
]


Best,
-jay


On 08/02/2012 02:09 PM, Heng Xu wrote:
> Hi, attached is the json_filter file I was used, but I it just came with devstack script installation, I did not even modify it.
> Heng
> ________________________________________
> From: Pengjun Pan [panpengjun@xxxxxxxxx]
> Sent: Thursday, August 02, 2012 6:07 PM
> To: Heng Xu
> Cc: openstack@xxxxxxxxxxxxxxxxxxx
> Subject: Re: [Openstack] Cannot pass hint to Nova Scheduler
> 
> Post your filter file. Might be a typo.
> 
> PJ
> 
> On Thu, Aug 2, 2012 at 1:02 PM, Heng Xu
> <shouhengzhang.xu@xxxxxxxxxxxxxxxx> wrote:
>> Hi, I recorded the error message, below
>>
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp   File "/opt/stack/nova/nova/scheduler/filters/json_filter.py", line 141, in host_passes
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp     result = self._process_filter(jsonutils.loads(query), host_state)
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp   File "/opt/stack/nova/nova/openstack/common/jsonutils.py", line 123, in loads
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp     return json.loads(s)
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp   File "/usr/lib/python2.7/json/__init__.py", line 326, in loads
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp     return _default_decoder.decode(s)
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp   File "/usr/lib/python2.7/json/decoder.py", line 366, in decode
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp   File "/usr/lib/python2.7/json/decoder.py", line 384, in raw_decode
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp     raise ValueError("No JSON object could be decoded")
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp ValueError: No JSON object could be decoded
>> 2012-08-02 13:51:02 TRACE nova.rpc.amqp
>>
>> it seems that the filter cannot find my json file, so although I was using the --hint functionality, whatever typed after the hint did not went to the filter host_passed function, so it could not locate the json object, any thoughts?
>> Thanks. Heng
>>
>> ________________________________________
>> From: openstack-bounces+shouhengzhang.xu=mail.utoronto.ca@xxxxxxxxxxxxxxxxxxx [openstack-bounces+shouhengzhang.xu=mail.utoronto.ca@xxxxxxxxxxxxxxxxxxx] on behalf of Heng Xu [shouhengzhang.xu@xxxxxxxxxxxxxxxx]
>> Sent: Thursday, August 02, 2012 4:47 PM
>> To: Pengjun Pan
>> Cc: openstack@xxxxxxxxxxxxxxxxxxx
>> Subject: Re: [Openstack] Cannot pass hint to Nova Scheduler
>>
>> Hi PJ
>>
>> I don't know what happen, I could not find the file in my Ubuntu filesystem, I searched for it, no result, but I just used ./stack.sh to install it, I it is just me could not find the file? Any thoughts?
>> thank you
>>
>> Heng
>> ________________________________________
>> From: Pengjun Pan [panpengjun@xxxxxxxxx]
>> Sent: Thursday, August 02, 2012 4:42 PM
>> To: Heng Xu
>> Cc: Joseph Suh; openstack@xxxxxxxxxxxxxxxxxxx
>> Subject: Re: [Openstack] Cannot pass hint to Nova Scheduler
>>
>> Hi Heng,
>>
>> The log should be in /var/log/nova/nova-scheduler.log.
>>
>> PJ
>>
>> On Thu, Aug 2, 2012 at 10:44 AM, Heng Xu
>> <shouhengzhang.xu@xxxxxxxxxxxxxxxx> wrote:
>>> Hello Joseph:
>>> I am not sure where to find the log, so I just used the screen to n-sch,
>>> and one of the error is
>>> TRACE nova.rpc.amqp ValueError: No JSON object could be decoded
>>> and I have no idea why this happened?
>>> Thank you.
>>> Heng
>>>
>>> ________________________________________
>>> From: Joseph Suh [jsuh@xxxxxxx]
>>> Sent: Thursday, August 02, 2012 3:28 PM
>>> To: Heng Xu
>>> Cc: openstack@xxxxxxxxxxxxxxxxxxx
>>> Subject: Re: [Openstack] Cannot pass hint to Nova Scheduler
>>>
>>> Heng,
>>>
>>> Does scheduler log show any error message or complaints?
>>>
>>> Thanks,
>>>
>>> Joseph
>>>
>>> ----
>>> (w) 703-248-6160
>>> (f) 703-812-3712
>>> http://www.east.isi.edu/~jsuh
>>>
>>> Information Sciences Institute
>>> University of Southern California
>>> 3811 N. Fairfax Drive Suite 200
>>> Arlington, VA, 22203, USA
>>>
>>>
>>> ----- Original Message -----
>>> From: "Heng Xu" <shouhengzhang.xu@xxxxxxxxxxxxxxxx>
>>> To: openstack@xxxxxxxxxxxxxxxxxxx
>>> Sent: Thursday, August 2, 2012 10:57:53 AM
>>> Subject: [Openstack] Cannot pass hint to Nova Scheduler
>>>
>>>
>>>
>>> Hi folks:
>>> I am new to openstack, I am current trying to test the json filter, I changed my /etc/nova/nova.conf as follow
>>>
>>> scheduler_driver=nova.
>>> scheduler.multi.MultiScheduler
>>> compute_scheduler_driver=nova.scheduler.filter_scheduler.FilterScheduler
>>> volume_scheduler_driver=nova.scheduler.chance.ChanceScheduler
>>> scheduler_available_filters=nova.scheduler.filters.standard_filters
>>> scheduler_default_filters=JsonFilter
>>> least_cost_functions=nova.scheduler.least_cost.compute_fill_first_cost_fn
>>> compute_fill_first_cost_fn_weight=-1.0
>>>
>>> so I can use the json filter
>>> however, when I was using it, if I boot a vm without any --hint to the scheduler, then the vm started fine, but if I use
>>>
>>> nova --debug boot --image 827d564a-e636-4fc4-a376-
>>> d36f7ebe1747 --flavor 1 --hint query=['>=','$free_ram_mb',1024] server1
>>>
>>> my vm started with error, and the following were output from the command above
>>>
>>> +-----------------------------
>>> --------+--------------------------------------+
>>> | Property | Value |
>>> +-------------------------------------+--------------------------------------+
>>> | OS-DCF:diskConfig | MANUAL |
>>> | OS-EXT-SRV-ATTR:host | None |
>>> | OS-EXT-SRV-ATTR:hypervisor_hostname | None |
>>> | OS-EXT-SRV-ATTR:instance_name | instance-0000002b |
>>> | OS-EXT-STS:power_state | 0 |
>>> | OS-EXT-STS:task_state | scheduling |
>>> | OS-EXT-STS:vm_state | error |
>>> | accessIPv4 | |
>>> | accessIPv6 | |
>>> | adminPass | dKvrsv4MZtfc |
>>> | config_drive | |
>>> | created | 2012-08-02T14:25:10Z |
>>> | flavor | m1.tiny |
>>> | hostId | |
>>> | id | 9d4a5855-3c69-40ba-b50d-3a2aa6a92edc |
>>> | image | cirros-0.3.0-x86_64-uec |
>>> | key_name | |
>>> | metadata | {} |
>>> | name | server1 |
>>> | progress | 0 |
>>> | status | BUILD |
>>> | tenant_id | d99ffa1b0c43455ab8dbbd81cf4380a7 |
>>> | updated | 2012-08-02T14:25:10Z |
>>> | user_id | d5e02f1810a44575b99a147f94507da1 |
>>> +-------------------------------------+--------------------------------------+
>>>
>>> as you can see, the vm is in error, this also happens whenever I need to pass a hint to the scheduler, as in samehostfilter and differenthostfilter,
>>>
>>> Does anyone know what's going on, thanks in advance.
>>> Heng
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~openstack
>>> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~openstack
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~openstack
>>> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
>>> Unsubscribe : https://launchpad.net/~openstack
>>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~openstack
>> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
>> Unsubscribe : https://launchpad.net/~openstack
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
> 
> 
> 
> _______________________________________________
> Mailing list: https://launchpad.net/~openstack
> Post to     : openstack@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~openstack
> More help   : https://help.launchpad.net/ListHelp
> 


Follow ups

References