code: def get_states(self, action_name, config_name, instances=None, map_name=None, **kwargs):
          
          policy = self.get_policy()
          _set_forced_update_ids(kwargs, policy.container_maps, map_name or self._default_map, instances)
          state_generator = self.get_state_generator(action_name, policy, kwargs)
          log.debug("Remaining kwargs passed to client actions: %s", kwargs)
          config_ids = get_map_config_ids(config_name, policy.container_maps, map_name or self._default_map,
                                          instances)
          log.debug("Generating states for configurations: %s", config_ids)
          return state_generator.get_states(config_ids)
docs: Returns a generator of states in relation to the indicated action.
  
          :param action_name: Action name.
          :type action_name: unicode | str
          :param config_name: Name(s) of container configuration(s) or MapConfigId tuple(s).
          :type config_name: unicode | str | collections.Iterable[unicode | str] | dockermap.map.input.InputConfigId | collections.Iterable[dockermap.map.input.InputConfigId]
          :param instances: Optional instance names, where applicable but not included in ``config_name``.
          :type instances: unicode | str | collections.Iterable[unicode | str]
          :param map_name: Optional map name, where not inlcuded in ``config_name``.
          :param kwargs: Additional kwargs for state generation, action generation, runner, or the client action.
          :return: Resulting states of the configurations.
          :rtype: collections.Iterable[dockermap.map.state.ConfigState]