openstack team mailing list archive
-
openstack team
-
Mailing list archive
-
Message #15424
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