← Back to team overview

maas-devel team mailing list archive

ProgrammingError: can't adapt type 'dict'

 

Anyone got the faintest idea what's going on here?  There's no error in
the postgres log (I enabled statement logging).

----

In [6]: n.set_distro_series('')
---------------------------------------------------------------------------
ProgrammingError                          Traceback (most recent call last)
<ipython-input-6-7920419dca0f> in <module>()
----> 1 n.set_distro_series('')

/usr/lib/python2.7/dist-packages/maasserver/models/node.pyc in
set_distro_series(self, series)

    748         """Set the distro series to install that node."""
    749         self.distro_series = series
--> 750         self.save()
    751
    752     def get_effective_power_parameters(self):

/usr/lib/python2.7/dist-packages/maasserver/models/cleansave.pyc in
save(self, *args, **kwargs)

     36     def save(self, *args, **kwargs):
     37         self.full_clean()
---> 38         return super(CleanSave, self).save(*args, **kwargs)

/usr/lib/python2.7/dist-packages/maasserver/models/timestampedmodel.pyc
in save(self, *args, **kwargs)

     53             self.created = current_time
     54         self.updated = current_time
---> 55         return super(TimestampedModel, self).save(*args, **kwargs)

/usr/lib/python2.7/dist-packages/django/db/models/base.pyc in save(self,
force_insert, force_update, using, update_fields)

    543
    544         self.save_base(using=using, force_insert=force_insert,
--> 545                        force_update=force_update,
update_fields=update_fields)

    546     save.alters_data = True
    547

/usr/lib/python2.7/dist-packages/django/db/models/base.pyc in
save_base(self, raw, force_insert, force_update, using, update_fields)

    571             if not raw:
    572                 self._save_parents(cls, using, update_fields)
--> 573             updated = self._save_table(raw, cls, force_insert,
force_update, using, update_fields)
    574         # Store the database on which the object was saved
    575         self._state.db = using

/usr/lib/python2.7/dist-packages/django/db/models/base.pyc in
_save_table(self, raw, cls, force_insert, force_update, using,
update_fields)
    633             forced_update = update_fields or force_update
    634             updated = self._do_update(base_qs, using, pk_val,
values, update_fields,
--> 635                                       forced_update)
    636             if force_update and not updated:
    637                 raise DatabaseError("Forced update did not
affect any rows.")


/usr/lib/python2.7/dist-packages/django/db/models/base.pyc in
_do_update(self, base_qs, using, pk_val, values, update_fields,
forced_update)
    677             else:
    678                 return False
--> 679         return filtered._update(values) > 0
    680
    681     def _do_insert(self, manager, using, fields, update_pk, raw):

/usr/lib/python2.7/dist-packages/django/db/models/query.pyc in
_update(self, values)

    505         query.add_update_fields(values)
    506         self._result_cache = None
--> 507         return query.get_compiler(self.db).execute_sql(None)
    508     _update.alters_data = True
    509

/usr/lib/python2.7/dist-packages/django/db/models/sql/compiler.pyc in
execute_sql(self, result_type)
    973         related queries are not available.
    974         """
--> 975         cursor = super(SQLUpdateCompiler,
self).execute_sql(result_type)
    976         rows = cursor.rowcount if cursor else 0
    977         is_empty = cursor is None

/usr/lib/python2.7/dist-packages/django/db/models/sql/compiler.pyc in
execute_sql(self, result_type)
    779
    780         cursor = self.connection.cursor()
--> 781         cursor.execute(sql, params)
    782
    783         if not result_type:

/usr/lib/python2.7/dist-packages/django/db/backends/util.pyc in
execute(self, sql, params)
     51                 return self.cursor.execute(sql)
     52             else:
---> 53                 return self.cursor.execute(sql, params)
     54
     55     def executemany(self, sql, param_list):

/usr/lib/python2.7/dist-packages/django/db/utils.pyc in __exit__(self,
exc_type, exc_value, traceback)
     97                 if dj_exc_type not in (DataError, IntegrityError):
     98                     self.wrapper.errors_occurred = True
---> 99                 six.reraise(dj_exc_type, dj_exc_value, traceback)
    100
    101     def __call__(self, func):

/usr/lib/python2.7/dist-packages/django/db/backends/util.pyc in
execute(self, sql, params)
     51                 return self.cursor.execute(sql)
     52             else:
---> 53                 return self.cursor.execute(sql, params)
     54
     55     def executemany(self, sql, param_list):

ProgrammingError: can't adapt type 'dict'

In [7]: pdb.pm()
> /usr/lib/python2.7/dist-packages/django/db/backends/util.py(53)execute()
-> return self.cursor.execute(sql, params)
(Pdb) sql
u'UPDATE "maasserver_node" SET "created" = %s, "updated" = %s,
"system_id" = %s, "hostname" = %s, "status" = %s, "owner_id" = NULL,
"distro_series" = %s, "architecture" = %s, "routers" = %s, "agent_name"
= %s, "zone_id" = %s, "cpu_count" = %s, "memory" = %s, "storage" = %s,
"power_type" = %s, "power_parameters" = %s, "token_id" = NULL, "error" =
%s, "netboot" = %s, "nodegroup_id" = %s WHERE "maasserver_node"."id" = %s '
(Pdb) params
(u'2014-04-30 19:14:00.754561', u'2014-05-06 14:06:59.220649',
u'node-c46c458c-d047-11e3-af93-e4115b13819f', u'nuc1', 4, '',
u'amd64/hwe-s', {}, u'', 1, 4, 4096, 1408, u'amt', '{"power_address":
"10.0.0.108", "power_pass": "Password1+", "mac_address":
"EC:A8:6B:FE:13:B6"}', u'finished [6/6]', True, 1, 13)


Follow ups