1
0
mirror of https://github.com/GNS3/gns3-server synced 2024-11-28 03:08:14 +00:00

Add / update docstrings

This commit is contained in:
grossmj 2024-09-29 19:42:06 +07:00
parent f7996d5e98
commit cafdb2522b
No known key found for this signature in database
GPG Key ID: 0A2D76AC45EA25CD

View File

@ -1040,14 +1040,16 @@ class Project:
""" """
Duplicate a project Duplicate a project
It's the save as feature of the 1.X. It's implemented on top of the Implemented on top of the export / import features. It will generate a gns3p and reimport it.
export / import features. It will generate a gns3p and reimport it.
It's a little slower but we have only one implementation to maintain. NEW: fast duplication is used if possible (when there are no remote computes).
If not, the project is exported and reimported as explained above.
:param name: Name of the new project. A new one will be generated in case of conflicts :param name: Name of the new project. A new one will be generated in case of conflicts
:param location: Parent directory of the new project :param location: Parent directory of the new project
:param reset_mac_addresses: Reset MAC addresses for the new project :param reset_mac_addresses: Reset MAC addresses for the new project
""" """
# If the project was not open we open it temporary # If the project was not open we open it temporary
previous_status = self._status previous_status = self._status
if self._status == "closed": if self._status == "closed":
@ -1254,10 +1256,20 @@ class Project:
return "<gns3server.controller.Project {} {}>".format(self._name, self._id) return "<gns3server.controller.Project {} {}>".format(self._name, self._id)
async def _fast_duplication(self, name=None, location=None, reset_mac_addresses=True): async def _fast_duplication(self, name=None, location=None, reset_mac_addresses=True):
"""
Fast duplication of a project.
Copy the project files directly rather than in an import-export fashion.
:param name: Name of the new project. A new one will be generated in case of conflicts
:param location: Parent directory of the new project
:param reset_mac_addresses: Reset MAC addresses for the new project
"""
# remote replication is not supported with remote computes # remote replication is not supported with remote computes
for compute in self.computes: for compute in self.computes:
if compute.id != "local": if compute.id != "local":
log.warning("Fast duplication is not support with remote compute: '{}'".format(compute.id)) log.warning("Fast duplication is not supported with remote compute: '{}'".format(compute.id))
return None return None
# work dir # work dir
p_work = pathlib.Path(location or self.path).parent.absolute() p_work = pathlib.Path(location or self.path).parent.absolute()