def do_remove(self, args): try: # add arguments do_parser = self.arg_remove() try: do_args = do_parser.parse_args(shlex.split(args)) except SystemExit as e: return printer.out("Getting role [" + do_args.name + "]...") org = org_utils.org_get(self.api, do_args.org) all_roles = self.api.Orgs(org.dbId).Roles().Getall(None) old_role = None for r in all_roles.roles.role: if r.name == do_args.name: old_role = r break if old_role is None: printer.out("No role [" + do_args.name + "]...") return 1 new_role = role() new_role.name = old_role.name new_role.description = old_role.description new_role.entitlements = pyxb.BIND() delete_roles = compare(r.entitlements.entitlement, do_args.entitlements, "name") for entitlementItem in r.entitlements.entitlement: exist = False for deleterole in delete_roles: if entitlementItem.name == deleterole.name: exist = True if not exist: already_entitlement = entitlement() already_entitlement.name = entitlementItem.name new_role.entitlements.append(already_entitlement) else: printer.out("Removed " + entitlementItem.name + " from role.") self.api.Orgs(org.dbId).Roles().Update(new_role) printer.out("Role [" + do_args.name + "] updated with new entitlements.") return 0 except ArgumentParserError as e: printer.out("ERROR: In Arguments: " + str(e), printer.ERROR) self.help_remove() except Exception as e: return marketplace_utils.handle_uforge_exception(e)
def do_create(self, args): try: # add arguments do_parser = self.arg_create() try: do_args = do_parser.parse_args(shlex.split(args)) except SystemExit as e: return printer.out("Creating role [" + do_args.name + "] ...") org = org_utils.org_get(self.api, do_args.org) new_role = role() new_role.name = do_args.name if do_args.description: new_role.description = do_args.description if do_args.entitlements: if do_args.entitlements is not None: new_role.entitlements = pyxb.BIND() entList = self.api.Entitlements.Getall() entList = entList.entitlements.entitlement entList = compare(entList, do_args.entitlements, "name") for ent in entList: add_entitlement = entitlement() add_entitlement.name = ent.name add_entitlement.description = ent.description new_role.entitlements.append(add_entitlement) printer.out("Entitlement " + ent.name + " added to the role") self.api.Orgs(org.dbId).Roles().Create(new_role) printer.out("Role [" + new_role.name + "] was correctly created", printer.OK) return 0 except ArgumentParserError as e: printer.out("ERROR: In Arguments: " + str(e), printer.ERROR) self.help_create() except Exception as e: return marketplace_utils.handle_uforge_exception(e)