Best Python code snippet using autotest_python
action_common.py
Source:action_common.py  
...154                                           are the word to print for an155                                           individual item of such a value.156    """157    add_remove_things = {'users': 'user', 'hosts': 'host'}  # Original behavior158    def _add_remove_uh_to_topic(self, item, what):159        """Adds the 'what' (such as users or hosts) to the 'item'"""160        uhs = getattr(self, what)161        if len(uhs) == 0:162            # To skip the try/else163            raise AttributeError164        op = '%s_%s_%s' % (self.topic, self.op_action, what)165        try:166            self.execute_rpc(op=op,                       # The opcode167                             **{'id': item, what: uhs})   # The data168            setattr(self, 'good_%s' % what, uhs)169        except topic_common.CliError, full_error:170            bad_uhs = self.parse_json_exception(full_error)171            good_uhs = list(set(uhs) - set(bad_uhs))172            if bad_uhs and good_uhs:173                self.execute_rpc(op=op,174                                 **{'id': item, what: good_uhs})175                setattr(self, 'good_%s' % what, good_uhs)176            else:177                raise178    def execute(self):179        """Adds or removes things (users, hosts, etc.) from a topic, e.g.:180        Add hosts to labels:181          self.topic = 'label'182          self.op_action = 'add'183          self.add_remove_things = {'users': 'user', 'hosts': 'host'}184          self.get_items() = The labels/ACLs that the hosts185                             should be added to.186        Returns:187          A dictionary of lists of things added successfully using the same188          keys as self.add_remove_things.189        """190        oks = {}191        for item in self.get_items():192            # FIXME(gps):193            # This reverse sorting is only here to avoid breaking many194            # existing extremely fragile unittests which depend on the195            # exact order of the calls made below.  'users' must be run196            # before 'hosts'.197            plurals = reversed(sorted(self.add_remove_things.keys()))198            for what in plurals:199                try:200                    self._add_remove_uh_to_topic(item, what)201                except AttributeError:202                    pass203                except topic_common.CliError, err:204                    # The error was already logged by205                    # self.failure()206                    pass207                else:208                    oks.setdefault(item, []).append(what)209        results = {}210        for thing in self.add_remove_things:211            things_ok = [item for item, what in oks.items() if thing in what]212            results[thing] = things_ok213        return results214    def output(self, results):...Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!
