Skip to content

Instantly share code, notes, and snippets.

@damilare
Forked from danielrobbins/zenpack-remove.py
Last active August 29, 2015 14:21
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save damilare/da59b4170bd234deb860 to your computer and use it in GitHub Desktop.
Save damilare/da59b4170bd234deb860 to your computer and use it in GitHub Desktop.
packs = None
if hasattr(dmd, 'ZenPackManager'):
packs = dmd.ZenPackManager.packs
else:
packs = dmd.packs
phase2 = False
for pack in packs():
try:
unused = pack.primaryAq()
print "%s is fine." % pack.id
except AttributeError:
print "Problem with %s ZenPack. Forcing removal." % pack.id
try:
packs._remove(pack)
print "Removed %s ZenPack." % pack.id
except AttributeError:
print "Unable to remove this ZenPack."
phase2 = True
# There were some packs we could not remove using the _remove method. Fall back to
# a deeper removal approach using pack ID.
if phase2:
print
print "Starting Phase 2 removal"
print
all_pack_ids = []
for pack_id in dmd.ZenPackManager.packs._objects:
all_pack_ids.append(pack_id)
valid_pack_ids = []
for pack in dmd.ZenPackManager.packs():
try:
valid_packs.append(pack.id)
except:
pass
# iterate over all packs, if missing from valid packs, remove:
for pack_id in all_pack_ids:
if pack_id not in valid_pack_ids:
print "Forced removal of %s" % pack_id
del packs._objects[pack_id]
commit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment