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)
Example #2
0
    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)
Example #3
0
    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)