code: def save(self):
          
          # We don't save during the loading otherwise we could lost stuff
          if self._settings is None:
              return
          data = {
              "computes": [],
              "settings": self._settings,
              "gns3vm": self.gns3vm.__json__(),
              "version": __version__
          }
  
          for c in self._computes.values():
              if c.id != "local" and c.id != "vm":
                  data["computes"].append({
                      "host": c.host,
                      "name": c.name,
                      "port": c.port,
                      "protocol": c.protocol,
                      "user": c.user,
                      "password": c.password,
                      "compute_id": c.id
                  })
          try:
              os.makedirs(os.path.dirname(self._config_file), exist_ok=True)
              with open(self._config_file, 'w+') as f:
                  json.dump(data, f, indent=4)
          except OSError as e:
              log.error("Can't write the configuration {}: {}".format(self._config_file, str(e)))
docs: Save the controller configuration on disk