code: def _create_linked_clone(self):
          
  
          gns3_snapshot_exists = False
          vm_info = yield from self._get_vm_info()
          for entry, value in vm_info.items():
              if entry.startswith("SnapshotName") and value == "GNS3 Linked Base for clones":
                  gns3_snapshot_exists = True
  
          if not gns3_snapshot_exists:
              result = yield from self.manager.execute("snapshot", [self._vmname, "take", "GNS3 Linked Base for clones"])
              log.debug("GNS3 snapshot created: {}".format(result))
  
          args = [self._vmname,
                  "--snapshot",
                  "GNS3 Linked Base for clones",
                  "--options",
                  "link",
                  "--name",
                  self.name,
                  "--basefolder",
                  self.working_dir,
                  "--register"]
  
          result = yield from self.manager.execute("clonevm", args)
          log.debug("VirtualBox VM: {} cloned".format(result))
  
          self._vmname = self._name
          yield from self.manager.execute("setextradata", [self._vmname, "GNS3/Clone", "yes"])
  
          # We create a reset snapshot in order to simplify life of user who want to rollback their VM
          # Warning: Do not document this it's seem buggy we keep it because Raizo students use it.
          try:
              args = [self._vmname, "take", "reset"]
              result = yield from self.manager.execute("snapshot", args)
              log.debug("Snapshot 'reset' created: {}".format(result))
          # It seem sometimes this failed due to internal race condition of Vbox
          # we have no real explanation of this.
          except VirtualBoxError:
              log.warn("Snapshot 'reset' not created")
  
          os.makedirs(os.path.join(self.working_dir, self._vmname), exist_ok=True)
docs: Creates a new linked clone.