NoneType' object has no attribute '__getitem__'

user3170122 picture user3170122 · Jun 9, 2014 · Viewed 48.4k times · Source

I am getting the following error while trying nova-list cli command in an openstack setup. NoneType' object has no attribute 'getitem'

 DEBUG (shell:777) 'NoneType' object has no attribute '__getitem__'
    Traceback (most recent call last):
      File "/opt/stack/python-novaclient/novaclient/shell.py", line 774, in main
        OpenStackComputeShell().main(map(strutils.safe_decode, sys.argv[1:]))
      File "/opt/stack/python-novaclient/novaclient/shell.py", line 685, in main
        self.cs.authenticate()
      File "/opt/stack/python-novaclient/novaclient/v1_1/client.py", line 169, in authenticate
        self.client.authenticate()
      File "/opt/stack/python-novaclient/novaclient/client.py", line 382, in authenticate
        auth_url = self._v2_auth(auth_url)
      File "/opt/stack/python-novaclient/novaclient/client.py", line 469, in _v2_auth
        return self._authenticate(url, body)
      File "/opt/stack/python-novaclient/novaclient/client.py", line 484, in _authenticate
        return self._extract_service_catalog(url, resp, respbody)
      File "/opt/stack/python-novaclient/novaclient/client.py", line 307, in _extract_service_catalog
        self.auth_token = self.service_catalog.get_token()
      File "/opt/stack/python-novaclient/novaclient/service_catalog.py", line 29, in get_token
        return self.catalog['access']['token']['id']
    TypeError: 'NoneType' object has no attribute '__getitem__'
    ERROR: 'NoneType' object has no attribute '__getitem_

_'

What does that mean?Is there any problem with my openstack setup or it's some python related error?

Answer

Bryan Oakley picture Bryan Oakley · Jun 9, 2014

Literally, 'NoneType' object has no attribute... means that you are trying to access an attribute or call a method on something that has the value None.

In practical terms, this means you likely have a bug somewhere that is using a variable before it is assigned a value, or using the value from a function that is returning None. The first step in debugging this problem is to ask yourself "why is this variable set to None?".

In this specific case, either self.catalog, self.catalog['access'] or self.catalog['access']['token'] is None.