ZenDMD Tip - Recreate Device Rels
From Zenoss Wiki
This is the approved revision of this page, as well as being the most recent.
Lets say d is your device object and you set its location relationship using the syntax d.location = '/NY'
In the process you've destroyed the location relationship and replaced it with a string! Functions like d.setLocation('/') won't work on this object type.
d.location.__class__ will show it's a string.
To delete the string, del d.location
d.location.__class__ will show result in an error since d.location doesnt exist.
Let's recreate the device relationships using it's schema by:
for name, schema in d._relations: try: d._setObject(name, schema.createRelation(name)) except: pass
d.location.__class__ will show it's a relationship and now d.setLocation('/') will work.
This will work for any relationship on a device object.