* tart exec: explain that Tart Guest Agent is required
Also handle decrease the connection timeout to 1 second
and provide a hint to the user.
* execute() can be made private
* Include error.localizedDescription
* Introduce "tart exec" command as an alternative to SSH
* Simplify control socket machinery by using NIO async/await primitives
* No reason to print the "vm" object directly, just refer to it as "VM"
* Log to Apple’s Unified Logging System
* Enable clipboard sharing on macOS too
And document which packages need to be installed on these operating
systems.
* We now use Tart Guest Agent
Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
---------
Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
* Posibility to add Labels when pushing OCI Image
Example running:
tart push $image ${registry}/org/${image}-testing --labels com.org.revision=testing --labels com.org.repo.buildid=123456
* Fix Linting
Run swift package plugin --allow-writing-to-package-directory swiftformat --cache ignore
* Update Sources/tart/Commands/Push.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/Commands/Push.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/Commands/Push.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/OCI/Manifest.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/Commands/Push.swift
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
* Update Sources/tart/Commands/Push.swift
* Do not use a variable to store parseLabels() results
* Trim spaces before splitting labels and support empty values
---------
Co-authored-by: Victor Serbu <victors@4psa.com>
Co-authored-by: Nikolay Edigaryev <edigaryev@gmail.com>
Co-authored-by: Fedor Korotkov <fedor.korotkov@gmail.com>
* tart run: introduce --net-softnet-expose
* --net-softnet-expose: add discussion
* --net-softnet-expose: add a note about Softnet restrictions
...and how to disable them.
* LAN → local network
* Better clarify what --net-softnet does
And how --net-softnet-allow can change that behavior.
* Registry: limit the text output on unexpected status code
* pullBlob(): limit channel read-out on error to 4 KiB
* No need to always read channel until end
This was introduced in https://github.com/cirruslabs/tart/pull/284
because we were blocking in "urlSession(_ session: URLSession, dataTask:
URLSessionDataTask, didReceive data: Data)", which we don't do anymore.
* Fetcher.fetch(): remove "progress" argument as we don't need it anymore
Otherwise we start to periodically get RST's from GitHub, possibly
because of too many connection opens, which has an effect of cancelling
previously received bytes.
These RST's can be observed in tcpdump/Wireshark or Console, emitted
from the libusrtcp.dylib library, com.apple.network subsystem, for the
Tart process:
>tcp_input [C59.1.1.1:3] flags=[R] seq=1805021659, ack=0, win=0 state=CLOSED rcv_nxt=1805021659, snd_una=1752355607
You can also observe the "Received Bytes" in "Activity Monitor" for
the Tart process while pulling ghcr.io/cirruslabs/macos-runner:sequoia,
and this value will periodically decrease.
* DiskV2: avoid allocating zero chunk on each zeroSkippingWrite() call
* Increase hole granularity size from 64 KiB to 4 MiB
* Fetcher: never write to disk, thanks to URLSessionDataDelegate
To make sure we won't prune then immediately after. Useful for when scenarios similar to Cirrus CLI when we make sure that several images are up-to-date before every request for task execution.
* Revert "Lowercase `tart.app` (#751)"
This reverts commit a9e2a19015.
* Optimize DiskV2 deduplication logic
In case we cloned `disk.img` from a local image, check if data at offset has the expected contents already.
* Hole punch only if needed
* Calculate hash only if needed
* subdataChunks optimization
* Reapply "Lowercase `tart.app` (#751)"
This reverts commit e74e9c845a.
* format
* Save at least 1GB on deduplication logic
* Build separately
* Revert "subdataChunks optimization"
This reverts commit e59382aeba.
* Another optimization
* Removed debug log
* reformat
* Revert "Hole punch only if needed"
This reverts commit 8c569fc5
* VZDiskImageSynchronizationMode's "description" field is a dead code
* Re-use the VZDiskImageSynchronizationMode extension
* tart run: replace --sync with --root-disk-opts
* VM: support root disk synchronization mode on macOS