+ # enforce should only be set by the 'service plc start accessors' sequence
+ if enforce:
+ try:
+ tag_type.update({'category':category,'description':description})
+ tag_type.sync()
+ roles_to_add = set(roles).difference(set(tag_type['roles']))
+ for rolename in roles_to_add:
+ tag_type.add_role(self.hash_name_to_role[rolename])
+ roles_to_delete = set(tag_type['roles']).difference(set(roles))
+ for rolename in roles_to_delete:
+ tag_type.remove_role(self.hash_name_to_role[rolename])
+ except:
+ # this goes in boot.log ...
+ print >> log, "WARNING, Could not enforce tag type, tagname=%s\n"%tagname
+ traceback.print_exc(file=log)
+