Add Affinity rule option to the load balancer plugin.
This options ensures some VMs are positioned on the same host, when it's possible.
It's important to be careful while configuring the Affinity tags and Anti-affinity tags fields, otherwise it may lead to conflicts between the two behaviours. In such case, affinity takes precedence over anti-affinity.
This commit renames and updates the **Docker management** section in the Xen Orchestra documentation. We explain a but better how containers are supported in Xen Orchestra, and remove links and references to the now-removed Docker support section, which was triggering a Docusaurus warning at build time.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Add two new API methods to download XCP-ng/XenServer system status (bug reports) via xo-cli:
host.getSystemStatus - Download system status from a single host
pool.getSystemStatuses - Download system status from all hosts in a pool in parallel
---------
Co-authored-by: Mathieu Piton <mathieu.piton@vates.tech>
* feat(xo6): added loader in treeview when search is triggered
* update changelog file
* fix(xo6): code cleanup following PR feedback
* fix order packages in changelog file
* feat(xo6): added new links in the user menu and customized it
* udpate Changelog file
* fix(xo6): code cleanup following PR feedback
* fix order packages in changelog file
docs: upgrade docusaurus from version 3.8 to 3.9
The onBrokenMarkdownLinks option is deprecated and has been replaced by siteConfig.hooks.onBrokenMarkdownLinks. However, since the option was configured to 'warn' and is the default behavior for this option, deleting the onBrokenMarkdownLinks seems like easier
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
- State to use a single XOA instance with SDN Controller plugin enabled
- Cleanup existing OpenFlow documentation
- Document XAPI plugin usage, including xo-cli commands
- Add configuration to toggle between direct channel and XAPI plugin
* feat(xo6): add loader on input search treeview when is triggered
* udpate Changelog file
* fix(xo6): removed condition on props icon in UiInput
* fix(xo6): removed debounced on clear
Several sections of the Xen Orchestra Appliance documentation mention modifying the config file, without specifying the actual file path. This commit updates those references to explicitly include /etc/xo-server/config.toml, which helps users locate and edit the correct configuration file more easily.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Changing the value of a `Size` component by editing the field and pressing
'Enter' was executing twice the `_save()` function in parallel (which calls the
`onChange` function).
In some cases like editing a running VM memory limit, this caused errors (trying
to open two modals at the same time, and trying to restart the VM twice)
* docs(xo): change link to the xcp-ng docs, add some infos in HA section
* Update docs/docs/manage_infrastructure.md
Co-authored-by: Thomas Moraine <thomas.moraine@vates.tech>
* Update docs/docs/manage_infrastructure.md
Co-authored-by: Thomas Moraine <thomas.moraine@vates.tech>
* Update docs/docs/manage_infrastructure.md
Co-authored-by: Thomas Moraine <thomas.moraine@vates.tech>
---------
Co-authored-by: Thomas Moraine <thomas.moraine@vates.tech>
docs(manage_infrastructure.md): remove content related to xscontainer, which is deprecated
Since XSContainer is no longer supported on XCP-ng 8.3 or XenServer and
we currently have no alternative, instructions related to XScontainer in
the XO doc are removed
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Updating the `Toggle` component to avoid throwing an error coming from a
`confirm` modal, which ends up appearing in the console.
This also changes a bit the behaviour of the `Toggle` component, which now
awaits its `onChange` function.
See Zammad#45442
Wrap "Copy to clipboard" button with a span to make the hoverable zone
continuous between the copiable element and the button. Without this, the 1ex
gap between the 2 was sometimes enough to make the button disappear before the
user had a chance to click it.
Adds a page to the Xen Orchestra documentation to list the compatible S3-based
storage support providers for Xen orchestra, with the different support tiers
and appropriate caveats.
* feat(sdn-controller): use XCP plugin to manage open switch
try to instantiate the plugin and fall back to direct query
if it fails
The plugin allow to define and target multiple bridges in parallel
* feat(sdn-controller): implement network wide rules
this introduce 2 new API method sdnController.addNetworkRule
and sdnController.deleteNetworkRule
Theses methods will only work with the plugin, and can't work with
the legacy ( direct channel) approach
Since the 5.110 release of Xen Orchestra, the Vmware to Vates (V2V) process has been updated, with a whole new backend. This commit documents this new process, in the XO documentation
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Pass the license object to isTrialRunning instead of passing the parent object.
See Zammad#44878 Zammad#44755 Zammad#44431 Zammad#43526 Zammad#44556 ...
Introduced by #8557
See #8523 → #8551 → #8557
The modal to activate HA used to suggest SRs from all pools, but selecting a SR from another pool would result to an error. This change makes that modal only suggest SRs from the correct pool.
* fix(nbd-client): better handling of error during getMap
* fix(xo-server): esxi check errors are objects instead of text
* fix(xo-web): V2v/check improve alignment
* feat(xo-web): add button to install nbdinfo/nbdkit if needed
Added a new section to the Incremental backups documentation to explain why some deltas can be unexpectedly large. Covers common causes and includes tips for investigation and mitigation.
This helps clarify expected behavior and avoids confusion when backup sizes seem too large.
add tips for 2tb+ disks and qcow disks
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
---------
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* docs(xo): explain the usage reports plugin more explicitly
Previously, it wasn't clear what the toggle called All did. This commit makes the documentation more clear about how it works.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* Update docs/docs/manage_infrastructure.md
Co-authored-by: Pierre Donias <pierre.donias@gmail.com>
---------
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Co-authored-by: Pierre Donias <pierre.donias@gmail.com>
Make the load balancing documentation clearer, better structured, with more illustrations, so that users can follow the process of creating or editing a load balancing plan without friction or hassle
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
The README now specifies that Xen Orchestra documentation updates are deployed automatically once per day. This makes it clearer for users that the online docs are always up to date without requiring manual intervention.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Network bonding was absent from the Xen Orchestra documentation. Information about this feature was previously only available in a blog article on XCP-ng.
This commit updates the XO doc so that it properly documents this feature, and remains the single source of truth in this topic. XO users won't have to dig through blog posts to find the relevant information, making the documentation more useful and trustworthy.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* feat(lite/release): check that version matches build version
1. Let Vite's build get the last commit hash instead of passing an env variable
2. Emit a build file containing the current commit hash and package version
3. Before releasing a new version, compare hash and version with current git commit and version passed by user
* readJson
In the REST API, we generally work on authenticated requests. getCurrentUser can therefore be a bit tedious, as it can return undefined | XoUser. So, whenever we need the current user in an authenticated request, we need to add a check:
if user === undefined throw for typescript to be happy
So now: getCurrentUser returns XoUser (throw if no user) and getCurrentUser({throwUnauthenticated: false}) returns undefined | XoUser
Enhancements:
Fixed @vates/types
Added limitAndFilterArray in utils.helper to easily handle user filter/limit everywhere
Enhance getObject type in rest-api
makeObjectMapper can take a function to define the path (for path based on the object type)
add getVmVdis in vmService to get VDIs from a VM
Endpoints:
/vms/:id/vdis
/vm-snapshots/:id/vdis
/vm-controllers/:id/vdis
/vm-templates/:id/vdis
* docs(xo): deduplicate acls content
The ACLs page in the XO documentation wasn't listed in the navigation bar and had content that duplicated the ACLs section of the Users page.
This commit removes the standalone page and updates the valid section with minor improvements (presentation, some missing info from the lone ACLs page) so that it becomes the only source of information on the topic.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* docs(xo): remove obsolete administration page
The Administration page duplicates content in the VMs section of the Infrastructure management page.
Although the Administration page seemingly refers to itself as a 'section', it contains no subsections or extra content, so this might as been a draft for a bigger page, and was never elaborated upon.
In any case, this page isn't accessible from the navigation bar and doesn't seem to add much value to the doc, so I suggest we remove it from the tree view.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* docs(xo): deduplicate backups and disaster recovery content
The 'Backups and Disaster Recovery' page in the XO documentation wasn't listed in the navigation bar and had content that was already present in other pages in the doc.
The last section of that page dealt with scheduled snapshots and completes the existing content on 'rolling snapshots'. That content has been added to the rolling snapshots section, so that everything can be grouped in a single location.
Finally, since the Backups and disaster recovery page is now obsolete, it has been deleted.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* Update docs/docs/users.md
Co-authored-by: Laure S. <laure.souai@vates.tech>
---------
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Co-authored-by: Laure S. <laure.souai@vates.tech>
The Xen Orchestra documentation moved to a new domain name a while ago. This commit updates the last remaining links in the XO doc and app that pointed to the old domain name
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* docs: deduplicate delta_backups page
Previously, the content of the Incremental Backups page (filename: delta_backups.md) was duplicated by the page titled "Incremental Backups (formerly: Continuous Delta backups)", which was not referenced in the sidebar and had the filename incremental_backups.md.
We don't want duplicate content, as it is troublesome to maintain and may cause confusion for the reader.
Also, since Delta backup is outdated terminology and we now talk about Incremental backups, the lone incremental backups.md page has been deleted, and the current "Incremental Backups" page with the filename delta_backups.md has been renamed as the new incremental_backups.md
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* docs: deduplicate full_replication page
Previously, the content of the Full Replication page (filename: disaster_recovery.md) was duplicated by the page titled "Full Replication (formerly: Disaster recovery)", which was not referenced in the sidebar and had the filename full_replication.md.
We don't want duplicate content, as it is troublesome to maintain and may cause confusion for the reader.
Also, since Disaster recovery is outdated terminology and we now talk about Full Replication, the lone full_replication.md page has been deleted, and the current "Full Replication" page with the filename disaster_recovery.md has been renamed as the new full_replication.md
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
---------
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* fix(nbd-client): handle unreachable VM through nbd
when the user select nbd but don't have any way to reach
the storage/host of the VM (for example no NBD enabled network,
or a NBD enabled network unreachable by xo/proxy it was timing out
and blocking the start of the backup
This error was blocking the fallback to export stream mechanism
* fix(xapi): respect the config file setting for preferNbd
* fix(xapi): don't close export stream if nbd failed to connect
* fix(xapi):respect vhd/qcow2 when faling back to a full if delta exports fails
doc(configuration) document let's encrypt support in xoa
Add documentation explaining how to configure Let's Encrypt in Xen Orchestra Appliance (XOA). This feature was mentioned in the XO 5.73 release blog post but was not included in the technical documentation for Xen Orchestra.
* feat(xo6/lite): update side panel behavior for mobile view
* feedback & improvement
* feedback
* feedback
* fix issue with sticky side panel when datatable has a lot of data
* feedback and fix issue
* add changelog
* update icon
* review feedback
* update vts copy button icon
This PR implement a limited support of generating and reading qcow2 . The support is limited since it only handles qcow2 with 64KB cluster size, with this structure :
header
refcount table
refcount blocks
L1 table
L1 tables
data clusters
generated by a9cd5bc639/scripts/qcow2-to-stdout.py
Add safety functions in abstract instead of s3 and azure. A new function "withTimeout" allows to handle timeout and success/failure after timeout.
It should help for better debug and it can be used in several situations.
XO6 is translated into languages, not existing for XO5. And as it is not
possible to select language in XO6 yet (is inherited from XO5 settings), interim
solution is to add these new languages into XO5 user settings, to make them
actually accessible in XO6. It will not affect XO5, because it will simply
fallback into English in case of not existing language.
Add a step-by-step guide for creating VM templates with cloudbase-init
support, including master VM creation, template branching, customization,
reseal and VM instantiation.
Include best practices, tips and visual aids for each step.
Signed-off-by: Tu Dinh <ngoc-tu.dinh@vates.tech>
remove a value that was only used for backup reports, and was no longer used since we use the template system
avoid the backup report content to differ when the backup job has reportWhen = false, which also caused differences between regular backup reports and backup reports generated with the "test plugin" button. To make sure the users can still have the previous behavior, we add parameter in the backup job configuration that allows short failure reports by not displaying all successful VMs in error reports.
rewording "successful VMs" to "successful items" so it also makes sense for metadata backups
Introduced by #6684
If sub-properties are required but the parent property is not, then omitting
the parent property passes the validation, which is not what we want.
The Viridian setting in Xen Orchestra was mentioned in a release blog (XO 5.79) but not in the XO technical documentation.
This improvement explain what Viridian is and how to enable it for VMs and templates, from within XO.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
The documentation for mutliple plugins was updated or moved outside the general Plugins page over time.
As a result, the links contained in various plugin's Readme or Usage files got obsolete, as they all point to the general Plugins page, instead of the specific plugin documentations.
This commit updates those links with the relevant location.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Previously, the Readme and Usage files related to the server-usage-report plugin contained links pointing to a general page on plugins.
The server-usage-report plugin has since been documented in the Management → Manage infrastructure management page of the Xen Orchestra documentation. As a result, these links have become obsolete.
This commit make the obsolete links point to the actual, new documentation on the server-usage-report plugin.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
See xoa#234
Prevent importing hub templates that are actually not templates.
Importing an incorrect template previously created a VM without any way to know it.
The Alerts page was not listed in the sidebar and duplicated content from the Alerts section in the Advanced page. This commit removes the standalone Alerts page and redirects all links pointing to it to the Alerts section of the Advanced page. This change also fixes a broken anchor warning in Docusaurus, which could prevent new documentation builds from succeeding.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* doc(XO): Explain VIFs and Network locking mode
VIFs and the Network locking mode were previously missing in the Xen Orchestra technical documentation, with details scattered across XO blog posts, CLI references in the XCP-ng doc, and other sources.
This commit adds information on VIFs and the network working modes to the XO documentation, making it a more complete and reliable reference for users.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
* Update manage_infrastructure.md
---------
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Co-authored-by: Julien Fontanet <julien.fontanet@vates.tech>
Fixes Zammad#38602
Introduced by #7247
Avoid immediately falling back to a hard shutdown when calling `VM.stop`,
especially in cases where a clean shutdown was requested explicitly by the user
like in `VM.setAndRestart`.
Rolling pool update (RPU) scheduling was introduced in Xen Orchestra 5.102 and mentioned in the corresponding blog post, but it was not included in the XO technical documentation.
This commit explains how to schedule RPUs, so users no longer need to refer to blog posts for instructions.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
As mentioned in the XO 5.104 release blog post, we're gradually documenting the Xen Orchestra REST API using Swagger.
The REST API page in our technical documentation already has a 'Future Improvements' section, which seems like a good place to mention Swagger, even though the documentation process is still ongoing.
This way, users won't need to check the XO blog to learn about this feature.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
The GitHub link in the footer was the default one used by the Docusaurus template.
This commit changes the link so that it points to the Xen Orchestra GitHub repository.
Correct a malformed link to the Support -> XOA Support -> XOA check section in the XO documentation, ensuring Docusaurus builds the doc properly.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
The General Troubleshooting page is not listed in the sidebar and contains minimal content, making it suitable to be merged into the existing Troubleshooting page, which is already accessible. Consequently, the standalone General Troubleshooting page is no longer needed and is being removed.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
While Software RAID is provided as-is, Xen Orchestra allows users to monitor the health of their software RAID arrays.
This includes a dedicated status interface and alert messages for any issues.
This information was previously documented in the Xen Orchestra 5.102 release blog post, and is now integrated into the XO technical documentation.
This update ensures users have a single reference point for technical information, eliminating the need to search through blog posts.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Differential restores were mentioned in the XO blog (release 5.89)
but not in the XO technical documentation.
This commit explains in the technical doc what differential restores are
and how to perform one from the XO interface.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Fixes Zammad#37604
Introduced by 36b94f745d
Since version 4, Redis' Node library doesn't support passing multiple flat
arguments to its methods to perform an action on multiple entries. It expects
an array instead.
we must compute a relevant partSize when uploading a file bigger than 50G
bigger partSize means more memory consumption, but we are limited to
upload 10K chunk of partSize bytes
this commit will ensure there is an estimate of the size from encrpted remote
and pass this estimate to the FullRemoteWriter
from ticket 38031
The usage-reports plugin was not covered at all in the Xen Orchestra technical documentation.
This improvement explains how to get usage reports from your resources, by enabling and setting up the plugin.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
The XCP-ng doc has been recently updated with more details on how to migrate from VMware to a Vates environment,
with a choice of methods including V2V within Xen Orchestra.
As a result, a mention of V2V is added to the XO doc, with a link to the relevant section in the XCP-ng doc.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
from ticket 37120
an EPERM error during a rmtree , called by the cleanup at the end
of a metdatadat backup, will trigger a ENOTDIR error
this can be caused by a misconfigured/failing immutable backup
remote without any VM ( either empty remote of config only remote)
are flooding the logs with errors like
Error: ENOENT: no such file or directory, scandir '/run/xo-server/mounts/f0952d37-294a-4d5e-8ba5-565e9932b4a7/xo-vm-backups'
I have checked the source code, and it uses a "Contains" and not some kind of "StartsWith" to check whether the disk name should be excluded.
I think it is important to clarify that it is possible to place the "[NOBAK]" label after the disk name, which might help some to maintain their naming convention.
- Updated VM creation code to match the TS typing and remove errors in `type-check`
- Refactored code
- Simplified and improved business logic
- Improved naming
Introduced by #3774
Introduced by #8412
ACLs feature is only available for XOA plans Enterprise and Premium. The
feature is properly disabled on the main ACL config page but was still
available from a VM's Advanced page and from the VM creation form.
Implement the mecanism to expose non XAPI object endpoints:
Added a new type, NonXapiXoRecord, which represents all XO objects that are not XAPI objects (e.g., users, servers, groups, etc.).
Split XapiXoController to create BaseController, allowing code reuse between XapiXoController and the new XoController.
BaseController exposes sendObjects and createAction (unchanged) and enforces subclasses to define the getObject and getObjects methods.
XoController requires subclasses to implement getAllCollectionObjects and getCollectionObject, as these are used in its getObjects and getObject methods.
filter and limit are handled by xo-server for XAPI objects. XoController implements its own filter and limit mechanisms for all non XAPI object in getObjects
And finally expose /rest/v0/servers and /rest/v0/servers/<server-id>🥳
Fix `Unsupported header 'x-amz-checksum-mode' received for this API call.`
on backblaze/cloudlfare object storage
from version 3.729, aws sdk send headers that aren't supported yet by backblaze
it happens when the source disk is not aligned with the vhd block size ( 2MB)
this PR will read more data into the grain directory / grain tables, but
this data won't be used since we use the virtual size to compute which
grain to read
from ticket 33018
doc(XO): Add Amazon S3 to list of supported remotes
Amazon S3 remotes have been supported for a while,
but there was no section mentioning it in the Backups → Remotes doc.
This is now fixed
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Also, replace the screenshot of the file restore feature with an example that uses Linux instead of a Microsoft/NTFS resource
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Introduced by 4eed730a09
Due to an issue with bump-pkg script, some packages were previously published on
NPM before their dependencies' versions were updated. This commit simply bumps
the versions of those packages to publish the correct list of dependencies.
@vates/types Added an export to the root of the lib because TSOA requires importing the type from the root library to generate the OpenAPI specification
@vates/types Tuples ([number, number]) throw errors when generating the OpenAPI specification. They have been updated to number[]
@vates/types Created a XapiXoRecord to be able to differentiate between XO types that come from xapi-object-to-xo and XO types that come from XO collections
xo-server Added getObjectsByType to avoid iterating over all XAPI objects when we know what type of object we want
Branded is not a valid type for the OpenAPI spec. I created a Unbrand type, that convert all Branded to string . (Use Unbrand only for OpenAPI specification definition to maintain Branded type safety)
Added another error middleware to catch TSOA errors and throw XO errors
Added a README.md to have consistency of order in the use of decorators
Document how to restore a file from a VHD with fuse-vhd CLI.
This will allow users to restore by themselves large files that make the restore fail when done from the UI.
Configure dependency injection + configure authentication middleware for openapi (copy of what actually exists in the current REST API. Will be improved later when implementing ACL/resource set)
A forum user suggested changes for better understanding of VM templates.
A new page has been created just for templates,
with Create, Read, Update, Delete (CRUD) sections.
Also, the Cloud-init/Cloudbase-init section of the Advanced page has been moved
to this new page.
This should make it easier for users to get all useful information on templates
in a single document.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Update the Xen Orchestra documentation to guide users
on transitioning from AES-256-GCM to ChaCha20-Poly1305 encryption,
solving an issue where users could encounter warnings due to mixed
encryption algorithms in remote storage.
Fix [this]((https://xcp-ng.org/forum/topic/10453/remote-encryption-algorithm)
Some users weren't able to sync all LDAP groups with XO.
Adding what to check to troubleshoot the issue.
Also, refreshing the style and presentation of the LDAP section in the Users page
XCP-ng 8.0 and 7.6 are references in multiple sections.
These versions are obsolete, nobody should be using SDN Controller on anything older than XCP-ng 8.2.
As a result, references to XCP-ng 8.0 and older can be removed safely.
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Sometime, the name does not provide enough information about the VM, adding more with Description, we will know more which VM has issue with backup.
Co-authored-by: b-Nollet <150058367+b-Nollet@users.noreply.github.com>
Since XOSAN is now legacy and XOSTOR has taken its place, we are removing XOSAN from the Xen Orchestra doc.
Links to XOSAN docs are replaced with links to XOSTOR (from the XCP-ng doc).
Signed-off-by: Thomas Moraine <thomas.moraine@vates.tech>
Remember server's pool name and description, and display the pool name as server default label. The server label can be deleted (since 81e7e07) to get back to the default pool name value.
We did multiple commits to keep the original changes around, but I would advise not to review by commit.
XO-437
* feat(backups): don't use checksum if not needed
encrypted backups are already authenticated, this guarantee that
a readble file has not been modified
thus, no need to compute a relatively slow hash is encryption is already done
In some failure cases, backup reports were not sent because of an error during handlebars compilation.
The `formatDate` function was incorrectly passed from partial to partial causing the `executeFunction` helper to execute `undefined` as a function (the `vmFailure` helper used default `formatDate=./formatDate` instead of `formatDate=../formatDate`, the `..` being necessary because of the `#each` loop)
Introduced by aa9c49ce6a
@@ -16,7 +16,7 @@ Returns a promise wich rejects as soon as a call to `iteratee` throws or a promi
-`concurrency`: a number which indicates the maximum number of parallel call to `iteratee`, defaults to `10`. The value `0` means no concurrency limit.
-`signal`: an abort signal to stop the iteration
-`stopOnError`: wether to stop iteration of first error, or wait for all calls to finish and throw an `AggregateError`, defaults to `true`
-`stopOnError`: whether to stop iteration of first error, or wait for all calls to finish and throw an `AggregateError`, defaults to `true`
@@ -34,7 +34,7 @@ Returns a promise wich rejects as soon as a call to `iteratee` throws or a promi
-`concurrency`: a number which indicates the maximum number of parallel call to `iteratee`, defaults to `10`. The value `0` means no concurrency limit.
-`signal`: an abort signal to stop the iteration
-`stopOnError`: wether to stop iteration of first error, or wait for all calls to finish and throw an `AggregateError`, defaults to `true`
-`stopOnError`: whether to stop iteration of first error, or wait for all calls to finish and throw an `AggregateError`, defaults to `true`
* @param {Array|Buffer|string} data1 - The first data array or buffer to compare.
* @param {T} data2 - The second data array or buffer to compare.
* @param {(index: number, diff: T) => void} [cb] - The callback function to invoke for each difference. If not provided, an array of differences will be returned.
* @returns {Array<number|T>|undefined} - An array of differences if no callback is provided, otherwise undefined.
* @returns {Array<number|T>|undefined} - An array of differences if no callback is provided; otherwise, undefined.
@@ -28,7 +28,7 @@ fs.stat('autoexec.bat', function (e, stats) {
## API
-`fs = fatfs.createFileSystem(vol, [opts], [cb])` — Simply pass in a block driver (see below) mapped to a FAT partition somewhere, and get back the API documented [here](http://nodejs.org/api/fs.html). An options dictionary can be provided, details are in the next section. You may also optionally provide a callback `cb(err)` which will be automatically registered for the on `'ready'` or `'error'` event.
-`fs = fatfs.createFileSystem(vol, [opts], [cb])` — Simply pass in a block driver (see below) mapped to a FAT partition somewhere, and get back an instance of an [`fs`](http://nodejs.org/api/fs.html). An options dictionary can be provided, details are in the next section. You may also optionally provide a callback `cb(err)` which will be automatically registered for the on `'ready'` or `'error'` event.
-`'ready'` event — fired on `fs` when initial volume information has been determined and the API is ready to use. It is safe to call other `fs` methods before this fires **only if** you are sure the first sector will be readable and represents a valid FAT volume.
-`'error'` event — fired if initialization fails for whatever reason.
@@ -36,7 +36,7 @@ fs.stat('autoexec.bat', function (e, stats) {
The `opts` dictionary you pass to `fatfs.createFileSystem` can contain any of the following options:
-`ro` — Enables readonly mode if `true`. It defaults to `false`, but if your volume driver does not provide a `writeSectors` method it will be overriden to `true`.
-`ro` — Enables readonly mode if `true`. It defaults to `false`, but if your volume driver does not provide a `writeSectors` method it will be overridden to `true`.
-`noatime` — The FAT filesystem can track the last access time (just a date, actually) but this means every read operation would also incur some write overhead. Defaults to `true`, meaning by default access times will **not** be updated on reads. Set this to `false` to track access times.
-`modmode` — chooses how `fs.chmod` (and the mode field from `fs.stat`–family calls) should map FAT attributes to POSIX permissions. Set to the number `0111` to map the readonly flag to the user's write bit being unset, and the archive/system/hidden flags to the user/group/other executable bits respectively. Set to the number `07000` to map the readonly flag to _all_ write bits being unset, and the archive/system/hidden flags to the sticky/setgid/setuid bits respectively. Set to `null` for readonly mapping. Defaults to `0111`.
-`umask` — any bits _set_ in this octal number will be _unset_ in the 'mode' field from `fs.stat`–family calls. It does not affect anything else. Defaults to `process.umask()`, or `0022` if that is unavailable.
@@ -53,7 +53,7 @@ Well, sort of…
### Temporary
- **BETA** **BETA****BETA**. Seriously, this is a _brand new_, _from scratch_, _completely unproven_ filesystem implementation. It does not have full automated test coverage, and it has not been manually tested very much either. Please please please **make sure you have a backup** of any important drive/image/card you unleash this upon.
- **BETA** **BETA****BETA**. Seriously, this is a _brand new_, _from scratch_, _completely unproven_ filesystem implementation. It does not have full automated test coverage, and it has not been manually tested very much either. Please, please, please,**make sure you have a backup** of any important drive/image/card you unleash this upon.
- A few methods are not quite implemented, either: `fs.rename`, `fs.unlink` and `fs.rmdir`, as well as `fs.watchFile`/`fs.unwatchFile` and `fs.watch`. These are Coming Soon™.
- There are several internal housekeeping items (redundant FAT tables, extra FAT32 information, etc.) that are not done. These do not seem to affect interop, but you may see warnings when repairing a filesystem written by this module.
- Oh, and not to scare you, but if an IO error happens while writing, the library usually just bails — bubbling an error up to your callback as if it were a hot potato. Although some attempt has been made to do separate writes in the safest order (e.g. allocating an additional file cluster, then appending data into it, and then finally updating the file's size), but this behavior has not been thoroughly audited for all operations. There's certainly no attempt to retry/cleanup/rollback if a multi-step change runs into trouble partway through.
remoteUrl can be found by using cli in `@xen-orchestra/fs` , for example a local remote will have a url like `file:///path/to/remote/root`
The `remoteUrl` can be found using the following command from the XOA CLI, and then picking the right `url` property:
`xo-server-db ls remote`
The `vhdPathInRemote` follows a file structure described in [VM backups](https://github.com/vatesfr/xen-orchestra/blob/master/%40xen-orchestra/backups/docs/VM%20backups/README.md).
## Restore a file from a VHD using `fuse-vhd` CLI
1. Mount a VHD to the Filesystem (see **Usage**).
2. Verify the VHD is Correctly Mounted:
`mount | grep fuse`
3. Get the `START` and `SIZE` of the disk whose file you want to restore. Multiply `START` by 512 (block size) to get the offset value. (`mountedVhdPath` is the `mountPoint` value from earlier, followed by `/vhd0`, for example). Depending on the partition type, you may need to do some additional setup to discover the partitions.
4. Mount the disk. Depending on the partition type, you may need to add some additional options. The `norecovery` option is used for ext3/ext4/xfs file systems; otherwise, remove this option.
remoteUrl can be found by using cli in `@xen-orchestra/fs` , for example a local remote will have a url like `file:///path/to/remote/root`
The `remoteUrl` can be found using the following command from the XOA CLI, and then picking the right `url` property:
`xo-server-db ls remote`
The `vhdPathInRemote` follows a file structure described in [VM backups](https://github.com/vatesfr/xen-orchestra/blob/master/%40xen-orchestra/backups/docs/VM%20backups/README.md).
## Restore a file from a VHD using `fuse-vhd` CLI
1. Mount a VHD to the Filesystem (see **Usage**).
2. Verify the VHD is Correctly Mounted:
`mount | grep fuse`
3. Get the `START` and `SIZE` of the disk whose file you want to restore. Multiply `START` by 512 (block size) to get the offset value. (`mountedVhdPath` is the `mountPoint` value from earlier, followed by `/vhd0`, for example). Depending on the partition type, you may need to do some additional setup to discover the partitions.
4. Mount the disk. Depending on the partition type, you may need to add some additional options. The `norecovery` option is used for ext3/ext4/xfs file systems; otherwise, remove this option.
wrap a source async generator to have it respect a max speed ( in bytes per seconds).
speed is either a strictly positive number or a function returning a strictly positive number. A speed change will be used for the next emitted packet.
The source generator must yield object with a length property.
Optimized for small yields regarding to the speed, since it won't split incoming packet.
If the generator reached the max speed it will be paused, limiting memory consumption.
wrap a source async generator to have it respect a max speed ( in bytes per seconds).
speed is either a strictly positive number or a function returning a strictly positive number. A speed change will be used for the next emitted packet.
The source generator must yield object with a length property.
Optimized for small yields regarding to the speed, since it won't split incoming packet.
If the generator reached the max speed it will be paused, limiting memory consumption.
└─ <YYYYMMDD>T<HHmmss>.xva.checksum // only on backup before 01/02/2025 or non encrypted
```
### with vhd directories
@@ -53,7 +53,7 @@ Add the following file: `xo-vm-backups/<VM UUID>/cache.json.gz`.
This cache is compressed in Gzip and contains an JSON object with the metadata for all the backups of this VM indexed by their absolute path (i.e. `/xo-vm-backups/<VM UUID>/<timestamp>.json`).
This file is generated on demande when listing the backups, and directly updated on backup creation/deletion.
This file is generated on demand when listing the backups, and directly updated on backup creation/deletion.
In case any incoherence is detected, the file is deleted so it will be fully generated when required.
@@ -180,7 +180,7 @@ job:
sourceRemote: IdPattern
# Indicates which XAPI to use to connect to a specific VM or SR
# for remote to remote backup job,this is only needed if there is healtcheck
# for remote to remote backup job,this is only needed if there is healthcheck
recordToXapi:
[ObjectId]:XapiId
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.