docs: def _load_machines_cache(self):
          """This method should fill up `_machines_cache` from scratch.
          It could happen only in two cases:
          1. During class initialization
          2. When all etcd members failed"""
  
          self._update_machines_cache = True
  
          if 'srv' not in self._config and 'host' not in self._config and 'hosts' not in self._config:
              raise Exception('Neither srv, hosts, host nor url are defined in etcd section of config')
  
          self._machines_cache = self._get_machines_cache_from_config()
  
          # Can not bootstrap list of etcd-cluster members, giving up
          if not self._machines_cache:
              raise etcd.EtcdException
  
          # After filling up initial list of machines_cache we should ask etcd-cluster about actual list
          self._base_uri = self._next_server()
          self._refresh_machines_cache()
  
          self._update_machines_cache = False
          self._machines_cache_updated = time.time()