[zenoss-users] 2.2 Upgrade zenmigrate issue -- 2nd Zenoss instance

Chet Luther cluther at zenoss.com
Thu Jun 26 08:07:33 EDT 2008


On Jun 25, 2008, at 8:02 PM, Bob Jensen wrote:
> I upgraded my 2nd zenoss instance from 2.1 to 2.2...
>
> I was getting some log entries saying that I should run zenmigrate  
> (as I got on the prior upgrade)
>
> This is what I get when I run zenmigrate:
>
> It runs fine until it tries to do TwoTwoIndexing
>
> INFO:zen.migrate:Installing TwoTwoIndexing (2.2.0)
> Recovering
> Traceback (most recent call last):
>   File "/opt/zenoss/Products/ZenModel/migrate/zenmigrate.py", line  
> 21, in ?
>     main()
>   File "/opt/zenoss/Products/ZenModel/migrate/zenmigrate.py", line  
> 18, in main
>     m.main()
>   File "/opt/zenoss/Products/ZenModel/migrate/Migrate.py", line 426,  
> in main
>     self.cutover()
>   File "/opt/zenoss/Products/ZenModel/migrate/Migrate.py", line 306,  
> in cutover
>     self.migrate()
>   File "/opt/zenoss/Products/ZenModel/migrate/Migrate.py", line 282,  
> in migrate
>     m.cutover(self.dmd)
>   File "/opt/zenoss/Products/ZenModel/migrate/twotwoindexing.py",  
> line 44, in cutover
>     for comp in dev.getDeviceComponents():
>   File "/opt/zenoss/Products/ZenModel/Device.py", line 586, in  
> getDeviceComponents
>     return [c.getObject() for c in brains]
>   File "/opt/zenoss/lib/python/Products/ZCatalog/CatalogBrains.py",  
> line 77, in getObject
>     parent = parent.unrestrictedTraverse(path[:-1])
>   File "/opt/zenoss/lib/python/OFS/Traversable.py", line 221, in  
> unrestrictedTraverse
>     next=obj[name]
>   File "/opt/zenoss/lib/python/OFS/ObjectManager.py", line 713, in  
> __getitem__
>     raise KeyError, key
> KeyError: 'ServerTech'

Doh! Your componentSearch catalog has at least one broken item in it.  
Try the following in zendmd. Run this script until you stop getting  
messages about things being removed.

# Fix componentSearch
brains = dmd.Devices.componentSearch()
for d in brains:
     try:
         bah = d.getObject()
     except Exception:
         print "Removing non-existent component from componentSearch:  
" + d.getPath()
         dmd.Devices.componentSearch.uncatalog_object(d.getPath())


# Make sure our fixes are saved
commit()



More information about the zenoss-users mailing list