Compare commits

...

2049 Commits

Author SHA1 Message Date
Julien Fontanet
cf572c0cc5 feat(xo-server): 5.36.3 2019-03-01 17:21:09 +01:00
Julien Fontanet
18cfa7dd29 feat(xen-api): 0.24.5 2019-03-01 17:20:19 +01:00
Julien Fontanet
72cac2bbd6 chore(xen-api/json-rpc): link to XenCenter code 2019-03-01 16:41:15 +01:00
Julien Fontanet
48ffa28e0b fix(xen-api/_watchEvents): timeout must be a float
Required by XML-RPC transport (XenServer < 7.3).
2019-03-01 16:39:49 +01:00
Julien Fontanet
2e6baeb95a feat(xo-server): 5.36.2 2019-03-01 13:53:28 +01:00
Julien Fontanet
3b5650dc1e feat(xen-api): 0.24.4 2019-03-01 13:52:26 +01:00
Julien Fontanet
3279728e4b chore(xen-api/events): prints errors 2019-03-01 13:42:13 +01:00
Julien Fontanet
fe0dcbacc5 fix(xen-api/_watchEvents): pTimeout expects milliseconds 2019-03-01 13:40:03 +01:00
Julien Fontanet
7c5d90fe40 feat(xo-server/createCloudInit): support network config (#3997)
* feat(xo-server/createCloudInit): support network config

See #3872

* Update index.js
2019-03-01 09:50:37 +01:00
marcpezin
944dad6e36 feat(docs): metadata backups (#4001) 2019-03-01 09:49:25 +01:00
Julien Fontanet
6713d3ec66 chore: update dependencies 2019-03-01 09:44:12 +01:00
Julien Fontanet
6adadb2359 feat(xo-server): 5.35.1 2019-02-28 18:32:17 +01:00
Julien Fontanet
b01096876c feat(fs): 0.7.1 2019-02-28 18:31:58 +01:00
Julien Fontanet
60243d8517 fix(fs/_mount/_sync): dont use --target
Because it also checks the parents of the path.
2019-02-28 18:31:57 +01:00
badrAZ
94d0809380 chore(CHANGELOG): v5.32.0 2019-02-28 17:42:40 +01:00
badrAZ
e935dd9bad feat(xo-web): v5.36.0 2019-02-28 17:35:29 +01:00
badrAZ
30aa2b83d0 feat(xo-server): v5.36.0 2019-02-28 17:33:36 +01:00
badrAZ
fc42c58079 feat(xen-api): v0.24.3 2019-02-28 17:20:59 +01:00
badrAZ
ee9443cf16 feat(@xen-orchestra/fs): v0.7.0 2019-02-28 17:17:33 +01:00
Julien Fontanet
f91d4a07eb fix(xen-api/_watchEvents): dont stop when fail to get records 2019-02-28 16:32:30 +01:00
Julien Fontanet
c5a5ef6c93 fix(xen-api/_watchEvents): dont fetch events while fetching tasks
When our tasks cache is desynchronized we re-fetch all tasks.

We must wait before fetching the next events to have fetch the tasks otherwise we risk a race condition.
2019-02-28 16:30:39 +01:00
Julien Fontanet
7559fbdab7 chore: update to http-request-plus 0.7.2
Work around a Node issue which led to incorrect *aborted* error events.
2019-02-28 16:21:07 +01:00
Julien Fontanet
7925ee8fee fix(fs/_mount#_sync): use findmnt to check mount success (#4003)
Fixes #3973
2019-02-28 15:32:06 +01:00
badrAZ
fea5117ed8 feat(metadata backup): backup XO config and pool metadata (#3912)
Fixes #3501
2019-02-28 15:31:17 +01:00
Julien Fontanet
468a2c5bf3 fix(xen-api/connect): always pass params to _transporCall 2019-02-28 12:36:57 +01:00
Julien Fontanet
c728eeaffa feat(fs/mount): keep open file on mount to avoid external umount (#3998) 2019-02-28 11:52:45 +01:00
Julien Fontanet
6aa8e0d4ce feat(xo-server/CR): share full between schedules (#3995)
Fixes #3973
2019-02-27 16:36:22 +01:00
Enishowk
76ae54ff05 feat(xo-web): add button to download log (#3985)
Fixes #3957
2019-02-27 10:02:30 +01:00
Julien Fontanet
344e9e06d0 feat(xen-api/objects): buffer objects' events on initial fetch (#3994)
XO requires all objects to be available at the same time.
2019-02-26 15:03:33 +01:00
Julien Fontanet
d866bccf3b chore(xen-api/getResource): options are optional 2019-02-26 14:44:55 +01:00
Julien Fontanet
3931c4cf4c chore(xo-server/snapshotVm): eventless implementation (#3992)
Previous implementation relied on events but had issues where it did not correctly detect and remove broken quiesced snapshot.

The new implementation is less magical and does not rely on events at all.
2019-02-26 14:41:55 +01:00
Julien Fontanet
420f1c77a1 fix: XAPI record types are now properly cased 2019-02-26 09:45:57 +01:00
Julien Fontanet
59106aa29e chore(xen-api/_watchEvents): new implementation (#3990)
- fetch each types independently: no more huge requests
- only fall back to legacy implementation if `event.inject` is not available
- can only watch certain types
- `Xapi#objectsFetched` is a promise which resolves when objects have been fetched
2019-02-26 09:45:21 +01:00
Julien Fontanet
4216a5808a chore(xen-api/setFieldEntry): always returns undefined 2019-02-24 18:17:26 +01:00
Julien Fontanet
12a7000e36 fix(xen-api): correct $type for records from event
XenApi event system returns lowercased types which things difficult, for
instance, `Record#set_name_label` methods did not work for some VM
because the lib called `vm.set_name_label` instead of
`VM.set_name_label`.

To work-around this problem, a map of types from lowercased is
constructed at connection.
2019-02-24 18:17:26 +01:00
Jon Sands
685355c6fb fix(docs): clarify build and fix link
- from sources: clarify yarn build
- backups: fix quiesce link
2019-02-24 13:27:16 +01:00
Julien Fontanet
66f685165e feat(xen-api/Record#update_): easier use for single entry
```js
// before
await object.update_property({
  entry: 'value',
})

// after
await object.update_property('entry', 'value')
```
2019-02-22 19:51:36 +01:00
Julien Fontanet
8e8b1c009a feat(xen-api#unsetField): replaced by setField(_, null) 2019-02-22 19:51:36 +01:00
Julien Fontanet
705d069246 feat(xen-api#getField): get a specific record field 2019-02-22 19:51:35 +01:00
Julien Fontanet
58e8d75935 chore(xen-api/*setField*): take separate type and ref 2019-02-22 19:51:34 +01:00
Julien Fontanet
5eb1454e67 fix(xen-api/_transportCall): avoid logging session ID 2019-02-22 19:51:34 +01:00
Julien Fontanet
04b31db41b feat(xen-api/getRecords): fetch multiple records 2019-02-22 19:51:33 +01:00
badrAZ
29b4cf414a fix(xo-server/xen-servers): pool property not deleted on disconnecting a connecting server (#3977)
Fixes #3976
2019-02-21 17:15:39 +01:00
Rajaa.BARHTAOUI
7a2a88b7ad feat(xo-web/new-network): dedicated view (#3906)
Fixes #3895
2019-02-21 11:43:40 +01:00
Nicolas Raynaud
dc34f3478d fix(xo-web): strip XML prefixes in OVA import parser (#3974)
Fixes #3962

- Parses the OVF XML without taking into account any namespace.
- Empty the import screen when we drop a new file on the drop zone to avoid displaying stale information during long parsing.
2019-02-21 09:24:01 +01:00
Julien Fontanet
58175a4f5e chore(ESLint): update config 2019-02-20 11:05:57 +01:00
badrAZ
c4587c11bd feat(xo-web/multipathing): display multipathing required state info (#3975) 2019-02-19 12:00:04 +01:00
Julien Fontanet
5b1a5f4fe7 feat(xo-web/editable): blur always submits (#3980)
Previous behavior (blur cancels) was surprising to users.

Enter still submits and Escape still cancels.
2019-02-19 11:29:50 +01:00
Jon Sands
ee2db918f3 feat(docs/from sources): Debian 8 → 9 (#3978)
* update cloud init docu

* update cloudinit images

* fix png links

* add emergency shutdown feature doc

* fix emergency shutdown typo

* Update to Debian 9 recommendation
2019-02-19 09:56:47 +01:00
Julien Fontanet
0695bafb90 fix(xen-api#_transportCall): pTimeout.call
Fixes 8e116063b
2019-02-17 19:39:11 +01:00
Julien Fontanet
8e116063bf feat(xen-api#_transportCall): timeout after 24 hours 2019-02-15 17:37:45 +01:00
Julien Fontanet
3f3b372f89 feat(xapi/Record#$xapi): link connection from record 2019-02-15 17:29:00 +01:00
Julien Fontanet
24cc1e8e29 chore(xo-server/pRetry): more tests 2019-02-15 14:38:12 +01:00
Julien Fontanet
e988ad4df9 chore: add package.repository.directory
See npm/rfcs#19
2019-02-15 14:38:11 +01:00
Julien Fontanet
5c12d4a546 chore(fs/PrefixWrapper): _remote → _handler 2019-02-15 14:38:11 +01:00
Enishowk
d90b85204d feat(xo-web): sort VMs by start time (#3970)
Fixes #3955
2019-02-15 10:09:53 +01:00
badrAZ
6332355031 fix(xo-server/multipathing): disable host before unplugging PBDs (#3965) 2019-02-14 16:03:48 +01:00
Rajaa.BARHTAOUI
4ce702dfdf feat(xo-web/vm/migrate): same-pool hosts first in selector (#3890)
Fixes #3262
2019-02-14 11:55:58 +01:00
Pierre Donias
362a381dfb fix(xo-web/getMessages): handle errors (#3966) 2019-02-13 18:15:54 +01:00
Enishowk
0eec4ee2f7 fix(xo-server,xo-web/VM): hide creation date if not available (#3959)
Fixes #3953
2019-02-13 14:01:45 +01:00
badrAZ
b92390087b fix(xo-server/host): multipathing status for XS < 7.5 (#3961)
Fixes #3956
2019-02-12 17:36:33 +01:00
Jon Sands
bce4d5d96f (Docu) Add page for emergency shutdown feature (#3960)
Fix emergency shutdown typo
2019-02-12 10:55:18 +01:00
Pierre Donias
27262ff3e8 fix(CHANGELOG): wrong version 2019-02-08 13:57:16 +01:00
Pierre Donias
444b6642f1 chore(CHANGELOG): 5.31.1 2019-02-08 13:49:44 +01:00
Pierre Donias
67d11020bb feat(xo-web): 5.35.0 2019-02-08 13:45:36 +01:00
Pierre Donias
7603974370 feat(xo-server): 5.35.0 2019-02-08 13:45:04 +01:00
Pierre Donias
6cb5639243 feat(xo-server-auth-saml): 0.5.3 2019-02-08 13:44:11 +01:00
Pierre Donias
0c5a37d8a3 feat(fs): 0.6.1 2019-02-08 13:42:52 +01:00
Pierre Donias
78cc7fe664 feat(xen-api): 0.24.2 2019-02-08 13:39:09 +01:00
Julien Fontanet
2d51bef390 feat(xo-server/snapshotVm): retry when VM_SNAPSHOT_WITH_QUIESCE_FAILED (#3952)
Fixes #3938
2019-02-08 13:16:08 +01:00
Julien Fontanet
bc68fff079 fix(CHANGELOG.unreleased): move items from fixes to enhancement 2019-02-08 11:19:49 +01:00
Nicolas Raynaud
0a63acac73 fix(OVA import): fix tar file size parsing (#3941)
Avoids relying on PAX header, uses a weird encoding in the normal filesize header.

Fixes #3900
2019-02-07 22:51:38 +01:00
Julien Fontanet
e484b073e1 feat(xo-server/moveVdi): retry on TOO_MANY_STORAGE_MIGRATES (#3940)
Fix xoa-support#1222
2019-02-07 17:46:41 +01:00
Julien Fontanet
b2813d7cc0 feat(xo-server/snapshotVm): detect and destroy broken quiesced snapshots (#3937)
Fixes #3936
2019-02-07 17:37:09 +01:00
Julien Fontanet
29b941868d feat(xen-api): work-around empty VBD#VDI XenServer issue (#3950) 2019-02-07 16:44:42 +01:00
Julien Fontanet
37af47ecff fix(xo-server/remote.getAllInfo): reduce timeout to 5s 2019-02-07 14:17:16 +01:00
Julien Fontanet
8eb28d40da feat(vhd-cli): display version in usage 2019-02-07 14:17:15 +01:00
Jon Sands
383dd7b38e feat(docs/cloudinit): various changes (#3942)
- Removed the "CloudInit support is available in the 4.11 release and higher" message - is anyone still using XOA this many years old?  
- Added a note about our change to the configdrive type, and notes for users who have customized their datasources to look for only openstack (inspired by a customer)  
- Updated all screenshots to the modern XOA UI.
2019-02-07 11:52:04 +01:00
Rajaa.BARHTAOUI
b13b3fe9f6 feat(xo-web/vm/disk): display device name (#3946)
Fixes #3902
2019-02-07 09:41:26 +01:00
Enishowk
04a5f55b16 feat(xo-web/VM): expose the creation date of the VM (#3947)
Fixes #3932
2019-02-07 09:19:09 +01:00
Rajaa.BARHTAOUI
4ab1de918e feat(xo-web/home): set description on bulk snapshot (#3933)
Fixes #3925
2019-02-06 10:41:35 +01:00
Julien Fontanet
44fc5699fd chore(xo-server): upgrade jest-worker to 24.0.0
Fixes #3929.

Related to jest#7182.
2019-02-05 18:32:03 +01:00
Julien Fontanet
dd6c3ff434 feat(docs/backups): add link to introduction video 2019-02-05 17:21:12 +01:00
Enishowk
d747b937ee fix(@xen-orchestra/fs): don't ignore mount options (#3931)
Fixes #3935
2019-02-05 17:19:09 +01:00
Julien Fontanet
9aa63d0354 fix(xo-server/backup NG): fix error condition (#3939)
Fix #3875
2019-02-05 16:44:28 +01:00
Julien Fontanet
36220ac1c5 feat(docs/from sources): add cifs-utils dependency 2019-02-05 10:22:40 +01:00
Julien Fontanet
d8eb5d4934 chore(.editorconfig): uniformize indent to 2 spaces 2019-02-04 18:01:09 +01:00
Julien Fontanet
b580ea98a7 fix(xo-server-auth-saml): AssertionConsumerServiceURL matches callback URL
Fixes xoa-support#1235
2019-02-04 16:21:26 +01:00
Julien Fontanet
0ad68c2280 chore(PULL_REQUEST_TEMPLATE): CHANGELOG → CHANGELOG.unreleased.md 2019-02-04 13:47:57 +01:00
Julien Fontanet
b16f1899ac chore(CHANGELOG.unreleased): contains unreleased changes
Inspired by [Prettier](https://github.com/prettier/prettier/blob/master/CHANGELOG.unreleased.md).

Changes should go there instead of CHANGELOG, they will be moved during the release process.

This change should prevent the issue where old updated PRs added changes at incorrect positions in the CHANGELOG.
2019-02-04 13:43:29 +01:00
ETL
7e740a429a feat(docs): add coalescing troubleshooting tip (#3927) 2019-02-04 13:26:34 +01:00
Pierre Donias
61b1bd2533 fix(xo-web/host): show actual host's RAM usage (#3924)
Instead of the sum of each VM's RAM usage
2019-02-01 12:03:52 +01:00
Pierre Donias
d6ddba8e56 feat(xo-server): 5.34.1 2019-02-01 09:31:42 +01:00
Julien Fontanet
d10c7f3898 fix(xo-server/package.files): config.json → config.toml 2019-02-01 09:12:18 +01:00
Pierre Donias
2b2c2c42f1 chore(CHANGELOG): 5.31.0 2019-01-31 15:37:39 +01:00
Pierre Donias
efc65a0669 feat(xo-web): 5.34.0 2019-01-31 15:32:03 +01:00
Pierre Donias
d8e0727d4d feat(xo-server): 5.34.0 2019-01-31 15:31:28 +01:00
Pierre Donias
a46a95b6fa feat(xo-vmdk-to-vhd): 0.1.6 2019-01-31 15:30:17 +01:00
Pierre Donias
ab4c3bc416 feat(xen-api): 0.24.1 2019-01-31 15:28:18 +01:00
Pierre Donias
8a2f012b79 feat(vhd-lib): 0.5.1 2019-01-31 15:25:40 +01:00
Julien Fontanet
5fd9eea3f6 fix(changelog): vhd-lib 0.5.1 2019-01-31 15:23:50 +01:00
Julien Fontanet
1b12aa90de fix(xo-server/backup NG): delete interrupted replications (#3923)
Fixes xoa-support#1215
2019-01-31 15:12:22 +01:00
Julien Fontanet
dfb6d1b58e chore(xo-server/backup NG): document other_config entries 2019-01-31 14:43:52 +01:00
Pierre Donias
53add3bf2d fix(xo-web/otp): enterprise plan (#3922) 2019-01-31 14:18:03 +01:00
Julien Fontanet
63414d5db9 Update CHANGELOG.md 2019-01-31 14:05:03 +01:00
Rajaa.BARHTAOUI
1312df8c88 feat(xo-web/vm/advanced): set VCPUs-params:mask under Advanced (#3254)
Fixes #3241
2019-01-31 11:33:45 +01:00
Julien Fontanet
94d36c3458 fix(CHANGELOG): add missing issue link 2019-01-31 11:20:25 +01:00
Rajaa.BARHTAOUI
0c3623e0f8 feat(xo-web/settings/remotes): NFS: display default options (#3921)
Fixes #3631
2019-01-31 11:14:01 +01:00
Julien Fontanet
ad01fcc880 feat(vhd-lib/Vhd#{_getBatEntry,containsBlock}()): never throw (#3920)
Fix xoa-support#1214

Fix `createSyntheticStream` when the disk has been resize in the chain.
2019-01-31 10:36:51 +01:00
Enishowk
b7f20a963f fix(xo-web): dont call user.getAll to get current user (#3918)
Fixes #3573
2019-01-30 17:50:22 +01:00
Enishowk
c51aad61eb chore(xo-server): improve style of login buttons (#3913)
xoa-support#1138
2019-01-30 17:34:22 +01:00
Julien Fontanet
12bbdba82c feat(xo-server/backupNg.getLogs): extract a subset of logs (#3914)
Related to xoa-support#1024
2019-01-30 14:35:39 +01:00
badrAZ
eb3760ee4a feat(xo-web/SR): display iscsi paths (#3829)
Fixes #3659
2019-01-30 11:02:34 +01:00
Rajaa.BARHTAOUI
af00adcfcc feat(xo-web/host/network): add PIF speed (#3901)
Fixes #3887
2019-01-30 10:11:39 +01:00
badrAZ
93985e1a51 feat(xo-web/exportVm): support zstd compression (#3891)
Fixes #3773
2019-01-28 15:42:39 +01:00
Pierre Donias
36f7af8576 feat(xo-web): www-xo notifications (#3904)
Related to xoa#21
2019-01-28 15:29:52 +01:00
Julien Fontanet
0608cda6d7 fix(yarn.lock): update 2019-01-28 15:03:22 +01:00
Enishowk
9565823900 feat(xo-server,xo-web): add OTP authentication (#3879)
Fixes #2044
2019-01-28 14:50:37 +01:00
Julien Fontanet
48b833c3b3 fix(xo-server/xapiObjectToXo): make dependents param optional
Fixes some legacy backups issues
2019-01-25 16:50:17 +01:00
Julien Fontanet
9990439594 fix(xen-api#putResource): correctly handle redirection for non-stream body
Fixes xoa-support#1179
2019-01-25 16:46:12 +01:00
badrAZ
e9fb37325d feat(xo-web/host): ability to enable/disable multipathing (#3865)
See #3659
2019-01-25 15:46:44 +01:00
Rajaa.BARHTAOUI
810c976d37 fix(xo-web/VM): snapshot with memory: "invalid parameters" (#3903) 2019-01-25 14:56:18 +01:00
Pierre Donias
c1cbc3b5aa feat(xo-web/host,vm): breadcrumb (#3898) 2019-01-25 11:21:58 +01:00
badrAZ
8298db1f2e feat(xo-web/copyVm): support zstd compression (#3889)
See #3773
2019-01-24 11:27:38 +01:00
badrAZ
47844fcf69 feat(xo-web/backup-ng): support zstd compression for full backups (#3883)
See #3773
2019-01-23 15:17:52 +01:00
Pierre Donias
f26f8b2af9 fix(xo-server/_getXenUpdates): call readAll with context (#3897) 2019-01-23 15:16:41 +01:00
Rajaa.BARHTAOUI
b246e84c48 feat(xo-web/render-xo-item): add pool name to templates (#3896)
Fixes #3894
2019-01-23 14:58:05 +01:00
Emerson Kfuri
6545e47193 feat(docs): document mountOptions.useSudo setting
Related to #3419
2019-01-22 16:57:48 +01:00
Julien Fontanet
0a78c2bb94 fix(xo-server/moveVdi): wait deletion before creating new VBD
Fixes #3426
2019-01-22 16:44:41 +01:00
Julien Fontanet
36102e0dff fix(xo-server/createCloudInitConfigDrive): fix label (11 chars) 2019-01-22 16:43:58 +01:00
badrAZ
bce0bf05e5 feat(xo-server): provide zstd compression for VM export (#3878)
See #3773
2019-01-22 15:53:28 +01:00
Julien Fontanet
55b762f490 chore: update Prettier to 1.16.1 2019-01-22 15:52:12 +01:00
Julien Fontanet
ad58f6a147 fix(xo-server/fatfs): fix param default value 2019-01-22 14:36:57 +01:00
Julien Fontanet
d67038c78d chore: update dependencies 2019-01-22 13:46:43 +01:00
Jon Sands
4badf48c45 feat(xo-server/vm.create): change cloud-init configdrive to nocloud type (#3877)
Related to #3872
2019-01-22 11:42:25 +01:00
Rajaa.BARHTAOUI
449dd2998b feat(xo-web/editable): Select supports multiple values (#3623) 2019-01-22 10:03:43 +01:00
Julien Fontanet
c613b4cab3 feat(PR template): add test to checklist 2019-01-21 17:34:24 +01:00
Julien Fontanet
370a0e8851 fix(log/README): transports.console → transportConsole 2019-01-21 17:34:24 +01:00
badrAZ
eb4f9f0b18 chore(xo-web/copyVm): remove unused code (#3888) 2019-01-21 16:25:05 +01:00
Rajaa.BARHTAOUI
bbf5e82c5d feat(xo-web): show type and copiable ID of unknown items (#3856)
Fixes #3833
2019-01-21 16:06:26 +01:00
badrAZ
27835bfbd0 fix(xo-web/backup-ng): smart settings not saved when editing backup (#3886)
Fixes #3885
2019-01-21 15:10:02 +01:00
Julien Fontanet
f663dbe7a7 fix(xo-server/backup NG): properly handle missing VHD in chain
Fixes #3875
2019-01-18 16:49:03 +01:00
Julien Fontanet
02e7eeec51 feat({log,xo-server}/serializeError): handle code property 2019-01-18 16:49:02 +01:00
Julien Fontanet
29a7bd0cb2 fix(xen-api/wrapError): better handling of non-XAPI errors
Fixes #3880
2019-01-18 09:14:33 +01:00
Julien Fontanet
0fd22b9fd8 feat(xo-web): basic plugins filtering (#3871) 2019-01-16 15:25:19 +01:00
Nicolas Raynaud
df809baaaf fix(OVA import): support big files (#3504)
Fixes #3468

- fix bug in VMDK header parsing
- parse extended tar headers
2019-01-16 10:31:52 +01:00
Julien Fontanet
cfd956631b chore: update http-request-plus to 0.7.1 2019-01-16 09:39:32 +01:00
Rajaa.BARHTAOUI
23687f62f0 fix(xo-web/xoa/update): enable downgrade button for ending trial (#3867) 2019-01-16 09:30:36 +01:00
Danp2
5aabea1121 fix(xo-web/messages): backuping → backing up (#3870) 2019-01-16 09:22:23 +01:00
Rajaa.BARHTAOUI
eac07a96de feat(xo-web/render-xo-item): optionally show free memory (#3832)
Fixes #3264

Show free memory in `SelectHost`.
2019-01-15 13:40:53 +01:00
Rajaa.BARHTAOUI
e9d1876699 fix(xo-web/link): middle click opens two tabs in firefox (#3825)
Fixes #3450
2019-01-15 10:35:31 +01:00
Julien Fontanet
f25705d559 fix(plugins/README): link to the documentation (#3866)
They cannot be installed from the npm repository.
2019-01-14 21:07:43 +01:00
badrAZ
ea48136797 feat(xo-server/host): ability to enable/disable multipathing (#3858)
See #3659
2019-01-14 15:01:44 +01:00
Julien Fontanet
270185d9dc feat(xen-api/examples/export-vm): add --gzip and --zstd 2019-01-14 14:57:45 +01:00
Julien Fontanet
308d53dc6b feat(xo-server/config): expose cookie options (#3861)
Fixes #3850
2019-01-14 14:31:39 +01:00
Julien Fontanet
a97c5f4cd9 feat(xo-server/sample.config): use TOML instead of YAML (#3860) 2019-01-14 14:00:16 +01:00
Julien Fontanet
3d7e0df4dd feat(xo-server/api): enable compression by default
Related to #3720
2019-01-14 12:24:31 +01:00
Julien Fontanet
53a0b7eed0 chore: update dependencies 2019-01-14 11:13:18 +01:00
Rajaa.BARHTAOUI
1ed2a6b620 fix(xo-web/new/sr): no redirection if the SR creation failed or canceled (#3853)
Fixes #3843
2019-01-14 10:53:11 +01:00
badrAZ
76f9017482 feat(xo-server/api): emit event on call/resolution of xo method (#3770) 2019-01-14 10:40:50 +01:00
Pierre Donias
86425f5d51 chore(CHANGELOG): staging 2019-01-11 15:27:44 +01:00
Pierre Donias
d77894310f feat(xo-web): 5.33.0 2019-01-11 15:18:50 +01:00
Pierre Donias
cbee05e0c7 feat(xo-server): 5.33.0 2019-01-11 15:18:12 +01:00
Pierre Donias
7f36dddefb feat(fs): 0.6.0 2019-01-11 15:16:53 +01:00
Pierre Donias
56b2dbd4fd feat(xen-api): 0.24.0 2019-01-11 15:14:54 +01:00
Pierre Donias
df67908784 feat(vhd-cli): 0.2.0 2019-01-11 15:13:03 +01:00
Pierre Donias
5dcdb81843 feat(vhd-lib): 0.5.0 2019-01-11 15:11:35 +01:00
Julien Fontanet
7f85935e43 feat(xo-server/backup NG): check complete VHD chain (#3820)
This triggers a full export if the chain appears incomplete.
2019-01-11 15:04:24 +01:00
marcpezin
2ab820d511 New store documentation update (#3837)
* new store documentation

* grammar fix
2019-01-11 15:03:39 +01:00
Rajaa.BARHTAOUI
db19668453 fix(xo-web/new/sr): remove warning modal for already used path (#3851)
Fixes #3844
2019-01-11 14:20:29 +01:00
Rajaa.BARHTAOUI
0f0ad029a6 feat(xo-web/new/sr): add tooltip for reattach action button (#3852)
Fixes #3845
2019-01-11 14:00:44 +01:00
badrAZ
062a98839c fix(xo-web/backup-ng): typo in the backup form (#3855)
Fixes #3854
2019-01-11 13:13:52 +01:00
Julien Fontanet
c38f21b76b feat(xen-api#{get,put}Resource): add 24h timeout on HTTP requests (#3834)
The Xen API does not support longer requests and it's necessary to properly detect broken requests.
2019-01-11 10:19:38 +01:00
Enishowk
e34a0a6e33 feat({fs,xo-server,xo-web}/remotes): show free space and usage (#3767)
Fixes #3055
2019-01-11 10:07:22 +01:00
badrAZ
f3c3889531 fix(xo-server/new-vm): fix creating a VM on a different local SR (#3827)
Fixes #3084
2019-01-10 15:39:40 +01:00
Rajaa.BARHTAOUI
7de22013a4 feat(xo-web/home): grouped VM snapshot (#3787)
Fixes #3778
2019-01-09 14:27:05 +01:00
Julien Fontanet
711d88765b chore(xen-api/examples/export-vdi): various stats 2019-01-09 13:50:36 +01:00
badrAZ
e9a7421be6 fix(xo-server/xen-servers): handle loosing connection case (#3841)
Fixes #3839
2019-01-09 13:46:17 +01:00
badrAZ
83fe490dbb fix(xo-server/xen-servers): fix connecting status (#3838) 2019-01-09 11:51:20 +01:00
Rajaa.BARHTAOUI
20c92c668b fix(xo-web/self): sort Resource Sets in Self view (#3823)
Fixes #3818
2019-01-09 10:01:46 +01:00
Enishowk
5d0f1c9cce feat(xo-web): autofocus username login page (#3836)
Fixes #3835
2019-01-09 09:44:38 +01:00
badrAZ
20317448a1 feat(xo-web/backup-ng/health): add number of lone snapshots to tab title (#3824)
Fixes #3500
2019-01-08 16:53:03 +01:00
badrAZ
b8a3d00343 feat(xo-server,xo-web/snapshot): ability to snapshot the VM memory (#3812)
Fixes #3795
2019-01-08 16:10:00 +01:00
Julien Fontanet
b459f74a8c fix(xen-api/getRecord): pass type and ref to _wrapRecord 2019-01-08 14:52:53 +01:00
Jon Sands
96a966b9ea fix(docs/CR/manual seed): update to Backup NG (#3758)
Fix #3754
2019-01-08 10:07:06 +01:00
Rajaa.BARHTAOUI
1af42617c2 feat(xo-web/vm/advanced): ACL management from VM view (#3774)
Fixes #3040
2019-01-07 15:35:24 +01:00
Julien Fontanet
100dd38c33 fix(fs/smb-mount#_sync): issue if already mounted
`mount.cifs` does not pring `already mounted`.
2019-01-07 14:43:27 +01:00
Julien Fontanet
2bf4950f4f chore: update dependencies 2019-01-07 10:46:12 +01:00
Enishowk
e8a98945f5 feat(@xen-orchestra/fs): implement SMB on top of mount (#3708)
Fixes #2257
2019-01-07 10:05:18 +01:00
Julien Fontanet
6c2e493576 chore(xo-server): use TOML for vendor conf 2019-01-04 17:28:38 +01:00
Julien Fontanet
f4fb0a1c79 feat(xo-web/xoa/update): make pkgs list copiable 2019-01-03 15:33:28 +01:00
Julien Fontanet
3a9b68fd8d fix(xo-server-auth-ldap/test-cli): pforOwn → pForOwn
Introduced in b3004a38aa, never released.
2019-01-02 16:01:44 +01:00
Julien Fontanet
c9f0481efc fix(xo-web/vm/advanced): only show nested virt for HVM
Fixes #3743
2018-12-24 10:49:25 +01:00
Julien Fontanet
93724218b3 chore(xo-server/backup NG): remove work-around
It should no longer be necessary.
2018-12-24 01:15:25 +01:00
Julien Fontanet
74b97e6518 feat(fs): can use sudo for mount/umount (#3819)
Fixes #3419
2018-12-21 17:24:12 +01:00
Julien Fontanet
f096bdc5d8 chore: update dependencies 2018-12-21 14:44:30 +01:00
badrAZ
0c64596a17 fix(xo-server/Xapi#checkpointVm): returns the created snapshot (#3810) 2018-12-21 11:27:54 +01:00
badrAZ
267be8e904 chore(backup-ng/logs): create a dedicated folder (#3816) 2018-12-21 11:07:34 +01:00
badrAZ
841a8ed1a5 feat(xo-web/backup-ng/logs): move restore logs to the restore tab (#3802)
Fixes #3772
2018-12-20 17:17:33 +01:00
Julien Fontanet
c55daae734 Update CHANGELOG.md 2018-12-20 15:31:05 +01:00
Julien Fontanet
9762fb1912 feat(xo-server): 5.32.2 2018-12-20 14:27:21 +01:00
Julien Fontanet
4047d11b2f feat(xo-server/conf): support TOML 2018-12-20 14:27:21 +01:00
badrAZ
d4215eb452 fix(xo-web/backup-ng): fix compression (#3809) 2018-12-20 09:39:31 +01:00
Julien Fontanet
17014c2819 feat(xo-web): 5.32.1 2018-12-19 16:49:52 +01:00
Julien Fontanet
4d24803b72 feat(xo-server): 5.32.1 2018-12-19 16:48:41 +01:00
Julien Fontanet
6b30465ef2 fix(xo-web/backup-ng): handle compression default value (#3796)
Missing from c5a21922d and e0a3b8ace.
2018-12-19 16:47:54 +01:00
Julien Fontanet
eac9ce597b chore(xen-api/_watchEvents): dont return a promise
This removes potential unhandled rejection warnings.
2018-12-19 14:24:49 +01:00
Pierre Donias
5c8c18fbe6 feat: XOA registration notification (#3808)
Fixes #3803
2018-12-19 14:08:28 +01:00
Shayan Ostadhassan
6f35a1a850 fix(xo-server/sr/probeHba): cast size to number (#3806)
Fixes #3805

This fixes an exception thrown when list of discovered HBAs return string
instead of integer as disk size.
2018-12-19 12:02:58 +01:00
Julien Fontanet
917701e2f6 feat(xo-server/vm.snapshot): add saveMemory param (#3807)
Related to #3795
2018-12-19 10:39:53 +01:00
Pierre Donias
4d4e87aa93 feat(xo-web): 5.32.0 2018-12-18 14:02:20 +01:00
Pierre Donias
e3bbfc6b19 feat(xo-server): 5.32.0 2018-12-18 14:01:38 +01:00
Pierre Donias
0d26ac9858 feat(xo-acl-resolver): 0.4.1 2018-12-18 14:00:00 +01:00
Pierre Donias
4069264ad8 feat(xen-api): 0.23.0 2018-12-18 13:57:58 +01:00
Pierre Donias
120e01897d feat(fs): 0.5.0 2018-12-18 13:55:16 +01:00
badrAZ
06755cb6b6 feat(xo-web/backup-ng/logs): merge status and display log details (#3800)
Fixes #3797
2018-12-18 11:00:47 +01:00
Julien Fontanet
27409f4fd5 fix(xo-server/worker): sync the remote handlers
Fixes #3739
2018-12-17 18:00:02 +01:00
Julien Fontanet
82253509d0 fix(xo-server/backup NG): fix issues due to fs changes 2018-12-17 17:59:54 +01:00
Julien Fontanet
c450685ddd chore(fs/{sync,forget}): add comments 2018-12-17 17:59:54 +01:00
badrAZ
9a79088e8a chore(xo-web/backup-ng): use btnStyle (#3798) 2018-12-17 15:43:39 +01:00
Julien Fontanet
83760157ad chore(xen-api): silence Bluebird warning 2018-12-17 15:32:52 +01:00
Julien Fontanet
985aa2225e fix(fs/local#create{Read,Write}Stream): wait for file to be opened
This also fix `createOutputStream` when directories are missing.
2018-12-17 15:25:35 +01:00
badrAZ
0ad340d971 feat(xo-web/backup-ng/overview): ability to copy schedule/job id to clipboard (#3791)
Fixes #3753
2018-12-17 10:20:51 +01:00
Rajaa.BARHTAOUI
97726dce12 fix(xo-web/self): all objects are missing (#3096)
Fixes #2689
2018-12-14 16:24:10 +01:00
Julien Fontanet
342320b481 feat(xo-server/xen-servers): add metadata to PoolAlreadyConnected (#3792) 2018-12-14 15:09:43 +01:00
badrAZ
1bfcbf49b9 feat(xo-web/backup-ng/new): add a link to the documentation (#3790)
Fixes #3789
2018-12-13 15:49:37 +01:00
Julien Fontanet
9d1eb8182b fix(xo-server/remote.list): add path to Handler#list()
Fixes #3768

Introduced in 043b381733
2018-12-13 15:19:04 +01:00
Julien Fontanet
18a6c57f02 chore(CHANGELOG): add fs to the list of packages 2018-12-13 14:53:59 +01:00
badrAZ
d3b6d1a97f fix(xo-server/servers): always remove pool→connection association (#3782)
* fix(xo-server/servers): delete correctly the connection from the cashe

* useless findKey

* CHANGELOG

* fix error

* code improvement

* code improvement

* code improvement

* Update CHANGELOG.md

* fix errors

* Update xen-servers.js

* missing entry in CHANGELOG
2018-12-13 12:21:02 +01:00
Julien Fontanet
ece881c02c fix(fs#unlink): remove timeout
This is not an `O(1)` operation.
2018-12-13 11:07:28 +01:00
badrAZ
631e8ce52d feat(xo-web/backup-ng/overview): display last run status (#3779)
Fixes #3769
2018-12-12 16:27:34 +01:00
badrAZ
cb5d3b9750 feat(xo-server/backup-ng): disable VM HA on DR/CR (#3755)
Fixes #2359
2018-12-12 16:04:03 +01:00
Julien Fontanet
995e6664f9 fix(fs/smb#create{Read,Write}Stream): works with opened files (#3785) 2018-12-12 15:38:54 +01:00
Julien Fontanet
1f497aa4df chore(fs): update @marsaud/smb2 to v0.13 2018-12-12 15:12:58 +01:00
Julien Fontanet
184dbc5516 chore(fs/smb): use a single client/connection (#3775) 2018-12-11 18:47:46 +01:00
Julien Fontanet
a1f25a4e3e chore(docs/supported-versions): add XS and XCP-ng 7.6 2018-12-11 10:46:13 +01:00
Julien Fontanet
cc4ab94428 chore: reformat with Prettier 2018-12-11 10:45:00 +01:00
Rajaa.BARHTAOUI
48727740c4 feat(xo-web/new-xosan): use SortedTable (#3691)
See #2416
2018-12-10 16:15:04 +01:00
Julien Fontanet
cc26e378e5 chore(fs/{createOutputStream,outputFile}): move dir logic in abstract 2018-12-07 17:12:12 +01:00
Julien Fontanet
28579258b3 feat(docs/sources): add git checkout before pull
Related to #3764.
2018-12-07 14:54:26 +01:00
Julien Fontanet
70b9b67f67 chore(fs/test): add TEST_DATA_LEN constant 2018-12-07 11:14:02 +01:00
Julien Fontanet
224b053eb1 chore(fs/test): test read() 2018-12-07 11:12:00 +01:00
Julien Fontanet
39bce978bc chore(fs/test): testWithFileDescriptor helper 2018-12-07 10:57:14 +01:00
Julien Fontanet
9435bd5493 chore(fs#openFile): flags are not optional 2018-12-07 10:45:56 +01:00
badrAZ
2284b3ef0a feat(xo-server): obfuscate token param (#3761) 2018-12-07 10:35:54 +01:00
Julien Fontanet
99dc64e8bb fix: occured → occurred (2) 2018-12-06 18:53:35 +01:00
Julien Fontanet
e47525b60b chore(fs/test): test list prependDir option 2018-12-06 18:53:09 +01:00
Julien Fontanet
10d4782ee2 feat(fs/mk{dir,tree}): new methods to create dirs (#3763) 2018-12-06 18:50:39 +01:00
Julien Fontanet
11cff2c065 feat(fs): prefix get/set → addPrefix method (#3766)
This method returns a new object which will transparently prefix all paths.

It is better than previous API because:

- the same handler can be reused and will not be invalidated when changing the prefix
- Abstract and implementations can call high-level methods without worrying about doubling the prefix
2018-12-06 17:22:37 +01:00
Julien Fontanet
11f742b020 fix: occured → occurred 2018-12-06 17:18:08 +01:00
Julien Fontanet
2353552e11 chore(fs/abstract): use path.posix
All paths in this lib are Posix paths and should be treated as such, even on Windows.
2018-12-06 13:59:51 +01:00
Rajaa.BARHTAOUI
d6012d8639 feat(xo-web/VM): add tooltip for VM status icon (#3765)
Fixes #3749
2018-12-06 11:48:21 +01:00
Julien Fontanet
7089ee778a fix(xo-server/migrateLegacyBackupJob): dont migrate when ids contain : 2018-12-05 17:49:07 +01:00
Julien Fontanet
629931782e feat(fs/{rmdir,unlink}): dont throw on missing entries 2018-12-05 17:20:51 +01:00
Julien Fontanet
1b48c626f4 fix(fs/smb): create{Read,Output}Stream and getSize with opened files 2018-12-05 16:31:38 +01:00
Julien Fontanet
ba35f51459 chore(fs/test): test createOutputStream 2018-12-05 16:31:38 +01:00
Julien Fontanet
ee5f3fc68d chore(fs/test): test createReadStream and getSize on opened files 2018-12-05 16:31:39 +01:00
Julien Fontanet
7be671f0f7 chore(fs/test): ensure test dir exists 2018-12-05 16:26:38 +01:00
Julien Fontanet
48c3748c28 feat(fs/abstract#rmdir): implement timeout 2018-12-05 15:37:21 +01:00
Julien Fontanet
3814a261d6 fix(fs/abstract#kResolve): edge case with / path 2018-12-05 15:35:24 +01:00
Julien Fontanet
81b82ce06b fix(fs/smb#_rmdir): error code on non-empty dir 2018-12-05 15:35:24 +01:00
Julien Fontanet
20c3f76278 feat(fs): split rmdir into rmdir and rmtree 2018-12-05 15:35:17 +01:00
Julien Fontanet
2c93b69144 chore(fs): simplify sync/forget
- These methods are now optional
- sync no longer returns anything
2018-12-05 14:39:12 +01:00
Julien Fontanet
043b381733 chore(fs/abstract#list): remove default value 2018-12-05 14:30:55 +01:00
Julien Fontanet
ff014df231 chore(fs): remove unnecessary default params 2018-12-05 14:29:35 +01:00
Julien Fontanet
055d1e81da chore(fs): sort methods 2018-12-05 14:27:20 +01:00
Julien Fontanet
b60678e79f fix(fs/abstract#test): resolve path 2018-12-05 14:06:53 +01:00
Julien Fontanet
fd93dfbc18 feat(fs): prefix support (#3759)
It is a prefix that will be used as root for all other paths.
2018-12-05 13:51:38 +01:00
Julien Fontanet
d74a5d73f0 chore(fs/abstract#test): Buffer#compare → Buffer#equals 2018-12-05 13:49:33 +01:00
Julien Fontanet
16a6d395c8 chore(fs/abstract): only call low-level methods 2018-12-05 13:48:42 +01:00
badrAZ
d6654807fa fix(xo-server/logs): sensitive params not hidden (#3760) 2018-12-05 13:41:32 +01:00
Julien Fontanet
e25ff221ba fix(fs/abstract#_outputFile): missing callback 2018-12-05 11:05:01 +01:00
Julien Fontanet
7df965ccd7 chore(fs): remove unnecessary tests 2018-12-05 11:00:55 +01:00
Julien Fontanet
f6b73b8303 chore(fs/abstract#_outputFile): use readable-stream/finished 2018-12-05 11:00:12 +01:00
Julien Fontanet
d617214c62 chore: update dependencies 2018-12-05 10:39:38 +01:00
Julien Fontanet
e85744cec0 chore(fs/smb): preserve stack on wrapped errors 2018-12-05 10:27:13 +01:00
Julien Fontanet
da74555e02 feat(xo-remote-parser/smb): handle missing path 2018-12-04 17:48:38 +01:00
Enishowk
4a9f489f20 fix(changelog): XOSAN line in wrong place (#3756) 2018-12-04 17:46:01 +01:00
Enishowk
18b17bda7c feat(@xen-orchestra/fs): add unit tests (#3736) 2018-12-04 16:36:10 +01:00
badrAZ
7faff824ff feat(xo-server/xen-servers): auto-connect to ejected host (#3738)
See #2238
2018-12-04 13:28:52 +01:00
Pierre Donias
e08d03687e feat(xo-web/render-xo-item/SR): minor improvements (#3752)
- Space left before container
- Hide context to self users
- Don't use text-muted on links
2018-12-04 11:35:57 +01:00
Rajaa.BARHTAOUI
75f1d80a86 feat(xo-web): contextualize SR (#3751)
See  #3021
2018-12-04 10:09:31 +01:00
Julien Fontanet
3967bfa099 chore(xo-server/config/remoteOptions.timeout): add comment 2018-12-03 17:50:34 +01:00
Rajaa.BARHTAOUI
6f6f463592 feat(xo-web/health/Orphan VDIs): display SR container (#3747)
See #3021
2018-12-03 16:56:34 +01:00
Rajaa.BARHTAOUI
8a760823b8 feat(xo-web/render-xo-item): contextualize VDI (#3285)
See #3021
2018-12-03 15:27:58 +01:00
Enishowk
8cd66af3f8 feat(backup-ng): add XOSAN in excluded tags by default (#3563)
Fixes #2128
2018-12-03 15:04:38 +01:00
Julien Fontanet
8569dbf985 chore: String#substring() → String#slice()
- homogeneity
- [faster in v8](https://bugs.chromium.org/p/v8/issues/detail?id=6730)
2018-12-03 14:59:59 +01:00
Julien Fontanet
9a03a70a3d fix(ESLint): disable react/jsx-indent rule 2018-12-03 14:59:48 +01:00
Julien Fontanet
42badbb08e fix(lint-staged): ESLint should not format 2018-12-03 14:54:41 +01:00
Julien Fontanet
956bdf0e03 feat(fs/smb#_writeFile): support flags 2018-12-03 14:39:24 +01:00
Julien Fontanet
91ff02d5c3 fix(fs/smb): always normalize errors 2018-12-03 14:38:51 +01:00
Julien Fontanet
84d88cf2b9 fix(fs/local#_{output,read}File): correctly handle flags 2018-12-03 14:35:52 +01:00
Julien Fontanet
fca2693730 feat(fs/{output,read}File): only support flags option 2018-12-03 14:35:17 +01:00
Julien Fontanet
d7ac1b9659 feat(fs/smb): implement rmdir 2018-12-03 13:11:31 +01:00
Julien Fontanet
ddb1a8ff51 fix(fs/smb): ensure connection is always closed (#3733) 2018-12-03 11:41:27 +01:00
Pierre Donias
56a2f8858b feat(xo-web/render-xo-item): simpler item components (#3547)
See #2605
2018-12-03 11:11:55 +01:00
Pierre Donias
55d7a1def0 fix(xo-web/backup-ng): canDeltaBackup import (#3745) 2018-12-03 10:34:46 +01:00
Pierre Donias
7b354f364c fix(xo-acl-resolver): add PBD resolution rule (#3742)
Fixes #2204
2018-12-03 09:32:18 +01:00
Pierre Donias
12dd40d330 fix(xo-web): missingPaths → missingPatches (#3741) 2018-11-30 15:12:10 +01:00
badrAZ
205f09a633 feat(xo-web/settings/users): display user groups (#3740)
Fixes #3719
2018-11-30 14:34:44 +01:00
badrAZ
f7dcccd8af chore(xo-web/backup-ng/new): improve setting pools implementation (#3715)
See #2578
2018-11-30 11:00:05 +01:00
Julien Fontanet
75592023f2 fix(xo-server/file restore): correctly use _getFilePath
Fixes #3739
2018-11-30 08:24:52 +01:00
Pierre Donias
a794a61c9b feat(xo-server): 5.31.1 2018-11-29 17:10:51 +01:00
Pierre Donias
804da115c9 chore(xo-server): use app-conf@0.6.1 2018-11-29 17:10:20 +01:00
Julien Fontanet
89df4f771b fix(fs/local#_rmdir): correctly prefix path 2018-11-29 15:35:58 +01:00
Pierre Donias
db3c5cfcb8 chore(CHANGELOG): 5.29.0 2018-11-29 14:22:08 +01:00
Pierre Donias
19d191a472 feat(xo-web): 5.31.0 2018-11-29 14:15:55 +01:00
Pierre Donias
d906fec236 feat(xo-server): 5.31.0 2018-11-29 14:15:18 +01:00
Pierre Donias
552482275d feat(xo-server-usage-report): 0.7.1 2018-11-29 14:13:54 +01:00
Pierre Donias
f06d40cf95 feat(xo-server-perf-alert): 0.2.0 2018-11-29 14:13:03 +01:00
Pierre Donias
cf3f1a1705 feat(xen-api): 0.22.0 2018-11-29 14:10:42 +01:00
Pierre Donias
08583c06ef feat({xo-server,xo-web}/VM): pause/unpause (#3731)
Fixes #3727
2018-11-29 11:51:42 +01:00
Julien Fontanet
5271a5c984 chore(xo-web/addSubscriptions): dont use deprecated componentWillMount (#3734) 2018-11-29 11:17:46 +01:00
Julien Fontanet
e69610643b feat(xo-server/xosan): use XOSAN as VM tag (#3735)
It previously was `XOSAN-${pool.name_label}` which is unnecessary, not easy to use for filtering and problematic for #2128.
2018-11-28 22:27:45 +01:00
Julien Fontanet
ef61e4fe6d chore(xo-server/api/xosan): reformat code 2018-11-28 22:10:12 +01:00
Julien Fontanet
4f776e1370 chore(fs): normalize paths in Abstract (#3732) 2018-11-28 21:44:49 +01:00
Julien Fontanet
aa72708996 chore: reformat some files 2018-11-28 19:10:51 +01:00
Enishowk
8751180634 feat(fs): rmdir method (#3730) 2018-11-28 17:42:32 +01:00
Julien Fontanet
2e327be49d chore(xo-web): reformat some files 2018-11-28 17:40:56 +01:00
badrAZ
f06a937c9c fix(xo-server/mergeXenPools): pool id → server id (#3728)
See #2238
2018-11-28 15:56:30 +01:00
Julien Fontanet
e65b3200cd chore(fs): fix some Flow types 2018-11-28 13:39:38 +01:00
Julien Fontanet
30d3701ab1 chore(fs): reformat code 2018-11-28 13:34:12 +01:00
badrAZ
05fa76dad3 feat(xo-server/xen-servers): prevent server connection when pool already connected (#3724)
See #2238
2018-11-28 10:42:55 +01:00
Julien Fontanet
4020081492 feat(xo-server/api): use per message deflate (#3720)
Related to #3699
2018-11-27 17:51:26 +01:00
Pierre Donias
2fbd4a62b2 chore(prettier): use jsxSingleQuote 2018-11-27 16:03:45 +01:00
Julien Fontanet
b773f5e821 fix(xo-server/xen-servers): pool.id → pool.$id (#3723)
Correctly unregister a Xapi connection from its pool.
2018-11-27 10:24:52 +01:00
Julien Fontanet
76c5ced1dd Update xen-servers.js 2018-11-27 10:23:46 +01:00
badrAZ
197768875b fix error 2018-11-27 10:21:39 +01:00
badrAZ
f0483862a5 fix(xo-server/xen-servers): a xapi object doesn't have an id 2018-11-27 10:12:47 +01:00
Julien Fontanet
ac46d3a5a2 chore: update dependencies
Fixes #3722
2018-11-27 09:26:39 +01:00
Julien Fontanet
2da576a1f8 fix(xo-web): avoid using TextDecoder (#3718)
This is an experimental API and not really necessary here.
2018-11-23 16:54:50 +01:00
Julien Fontanet
2e1ac27cf5 chore: dont format with ESLint 2018-11-23 16:38:24 +01:00
Julien Fontanet
258404affc fix(xo-web/settings/remotes): dont wait for test on create/edit 2018-11-23 16:03:00 +01:00
badrAZ
5121d9d1d7 feat(xo-web/logs): ability to filter logs by the VM name (#3711)
Fixes #2947

To be able to filter logs by the VM name, a property in the top level is needed. `vmNames` is an array which contains all found VMs name. It can be `undefined` if none VM is found.
2018-11-23 14:10:26 +01:00
Pierre Donias
f2a38c5ddd fix(xo-web/xoa/licenses): tip: XOA license mgmt not supported (#3714)
Fixes #3713
2018-11-21 13:12:29 +01:00
badrAZ
97a77b1a33 fix(xo-web/backup-ng-logs): differentiate not fetched yet from empty (#3712)
**NoObjects:**

The `NoObjects` is a wrapper which shows a spinner if a collection is `undefined` and a default message if it's empty.

**The Issue:**

In the line `323`, `groupBy` always returns an object even if `logs` is `undefined`.
2018-11-21 10:31:14 +01:00
Rajaa.BARHTAOUI
88ca41231f feat(xo-web/home/VMs): display pool's name (#3709)
Fixes #2226
2018-11-20 15:59:37 +01:00
badrAZ
9a8f84ccb5 chore(xo-server-perf-alert): add documentation (#3710)
This PR completes the merged PR #3675
2018-11-20 14:18:08 +01:00
Julien Fontanet
dd50fc37fe feat(xen-api): callTimeout option (#3707) 2018-11-20 10:12:58 +01:00
badrAZ
cafcadb286 feat(xo-server-perf-alert): notify if value is below threshold (#3675)
Fixes #3612
2018-11-20 10:07:42 +01:00
Pierre Donias
db3d6bba79 fix(xo-web/acls): action should be reset to undefined (#3704) 2018-11-19 16:14:25 +01:00
Julien Fontanet
11a0fc2a22 chore: update dependencies 2018-11-19 16:09:55 +01:00
badrAZ
1e0a8a5034 fix(CHANGELOG): missing entry (#3703) 2018-11-19 14:28:48 +01:00
Pierre Donias
34ef3e5998 fix(xo-web/xoa): tab icons (#3702) 2018-11-19 13:59:06 +01:00
Enishowk
e73fcc450d feat(xo-server/vm.set): use set_domain_type when available (#3700) 2018-11-19 09:39:16 +01:00
Julien Fontanet
2946eaa156 feat(xo-server): 5.30.1 2018-11-16 18:11:39 +01:00
Julien Fontanet
6dcae9a7d7 fix(xo-server/deleteVm): pass array to Promise.all 2018-11-16 18:10:47 +01:00
Pierre Donias
abeb36f06c chore(CHANGELOG): 5.28.2 2018-11-16 17:53:21 +01:00
Pierre Donias
41139578ba feat(xo-web): 0.30.0 2018-11-16 17:50:25 +01:00
Pierre Donias
cda7621b5d feat(xo-server): 5.30.0 2018-11-16 17:47:58 +01:00
Pierre Donias
b75dd2d424 feat(xo-acl-resolver): 0.4.0 2018-11-16 17:42:41 +01:00
Pierre Donias
273f208722 feat(xo-common): 0.2.0 2018-11-16 17:41:08 +01:00
Pierre Donias
c01e8e892e feat(xen-api): 0.21.0 2018-11-16 17:39:16 +01:00
Julien Fontanet
9dfd81c28f feat(xo-web/subscriptions): keep cached data for 10m (#3701)
Related to #3699

This should improve user experience when changing pages.
2018-11-16 17:37:33 +01:00
Pierre Donias
5dd26ebe33 fix(CHANGELOG): missing entries and links 2018-11-16 16:58:48 +01:00
Julien Fontanet
4c0fe3c14f fix(xo-server/importVdiContent): only throws when compiled with yarn dev
Related to #3678
2018-11-16 14:19:34 +01:00
badrAZ
2353581da8 chore(xo-web/backup-ng): improve setting power state implementation (#3684) 2018-11-16 14:05:58 +01:00
Julien Fontanet
2934b23d2f fix(xo-server/vm.delete): fix template handling (#3695)
Fixes #3498

It seems a recent version of XenServer forbids from destroying VM templates directly, we need to set `is_a_template` to `false` before calling `VM.destroy`.
2018-11-16 11:04:56 +01:00
Julien Fontanet
82e4197237 fix(xo-web/deleteVm): dont ask to force if error (#3696) 2018-11-16 10:39:09 +01:00
Julien Fontanet
a23189f132 fix(xo-server): update VM object when {,guest_}metrics have changed (#3694)
Fixes #3533
2018-11-16 10:32:13 +01:00
Julien Fontanet
47fa1ec81e fix(xo-web/settings/remotes): missing form id (#3697) 2018-11-16 09:35:14 +01:00
Julien Fontanet
4b468663f3 feat(xo-server): ability to set XAPI options in config (#3692) 2018-11-15 16:00:52 +01:00
Nicolas Raynaud
6628dc777d fix(xo-server/xosan.createSR): fix network detection (#3689)
Fixes #3688
2018-11-15 11:10:50 +01:00
Julien Fontanet
3ef3ae0166 fix(xo-server/remote.get{,All}): obfuscate sensitive values (#3687)
Fixes #3682
2018-11-14 14:39:20 +01:00
Julien Fontanet
bc6dbe2771 chore(xen-api/README): add 7.{4..6} compatibility 2018-11-14 14:18:14 +01:00
badrAZ
5651160d1c fix(xo-web/settings/remotes): fix incorrect input type (#3683)
Fixes #3681
2018-11-14 11:21:38 +01:00
Julien Fontanet
6da2669c6f fix(fs/smb#list): throws ENOTDIR instead of SMB error (#3685)
Fixes support#1014

This is more in line of other handlers and fix an issue in Backup NG where listing VM backups would fail when there are files in `xo-vm-backups/`.
2018-11-14 10:11:52 +01:00
Julien Fontanet
8094b5097f feat(xo-server/reaclette-utils/generateId): used as a computed for generated ID (#3680) 2018-11-13 22:58:37 +01:00
Pierre Donias
bdb0547b86 fix(xo-server/vm.create): merge double limit allocation (#3667)
This prevents unwanted error if the limits are exceeded in a transitory fashion.
2018-11-13 17:18:56 +01:00
Pierre Donias
ea08fbbfba fix(xo-server-cloud): missing protocol (#3686) 2018-11-13 17:01:03 +01:00
Julien Fontanet
b4cbd8b2b5 chore(fs): ignore enabled option
It makes no sense for this library to handled disabled remote.
2018-11-13 15:59:16 +01:00
Julien Fontanet
f8fbb6b7d3 feat(xen-api): add call params to errors (#3679)
It also moves `.method` to `.call.method`, but it appears it was not currently used in our code.
2018-11-13 12:03:05 +01:00
Julien Fontanet
c8da9fec0a chore: minor Flow fixes 2018-11-13 11:24:23 +01:00
Julien Fontanet
79fb3ec8bd fix(xo-server/plugin.get): hide sensitive config values (#3671) 2018-11-13 11:09:58 +01:00
Julien Fontanet
2243966ce1 feat(xo-server/checkPermissions): similar to hasPermissions but throws 2018-11-13 10:46:38 +01:00
Julien Fontanet
ca7d520997 feat(xo-acl-resolver/assert): throw error if unauthorized 2018-11-13 10:46:38 +01:00
Julien Fontanet
df44487363 chore(xo-web/backup-ng/log): disable bug reporting
Temporary measure because it is currently broken due to the size of the log in the HTTP request.
2018-11-13 10:13:20 +01:00
Julien Fontanet
b39eb0f60d chore(xo-server/api): add expected permission to unauthorized error 2018-11-12 17:34:15 +01:00
badrAZ
a3dcdc4fd5 chore(xo-server-perf-alert): unused property (#3672) 2018-11-12 15:38:58 +01:00
Julien Fontanet
2daac73c17 chore(xo-common/api-errors/unauthorized): add metadata
```ts
let data: {
  permission?: string,
  object: {
    id?: string,
    type?: string,
  },
}
```
2018-11-12 15:30:28 +01:00
Julien Fontanet
23eb3c3094 chore(xo-server/resourceSet.get{,All}): explicit permission check 2018-11-12 15:25:51 +01:00
Julien Fontanet
776d0f9e4a chore(xo-server/ipPool.getAll): explicit permission check 2018-11-12 15:25:51 +01:00
Enishowk
54bdcc6dd2 feat(xo-web/VM): switch virtualization mode (#3669)
Fixes #2372
2018-11-12 13:57:23 +01:00
Julien Fontanet
38084c8199 chore(xo-common/api-errors/unauthorized): remove "unauthorized" in message
It confuses users and the message is still relevant without in case of unauthorized users.
2018-11-12 13:50:33 +01:00
badrAZ
4525ee7491 fix(xo-server-usage-report): gracefully handle fetching stats error (#3656)
Fixes #3600
2018-11-09 16:10:54 +01:00
badrAZ
66a476bd21 feat(xo-web/backup-ng): warning & omitting VMs/pools on XS < 6.5 (#3668)
Fixes #3540
2018-11-09 15:02:29 +01:00
Pierre Donias
be6cc12632 fix(xo-server/vm.create): revert 37a906a2 (#3666)
Fixes #3658, fixes support#1064
2018-11-08 17:31:07 +01:00
Enishowk
673475dcb2 fix(xo-web/vm): restore display of pvhvm virtualization mode (#3662)
Fixes #3576
2018-11-08 17:05:46 +01:00
badrAZ
7dc1a80a83 fix(xo-server/xapi-stats/getVmStats): avoid sync exceptions (#3661) 2018-11-08 16:31:40 +01:00
Julien Fontanet
d49294849f chore(xo-server/vm.import): remove host parameter (#3663) 2018-11-08 16:30:50 +01:00
Rajaa.BARHTAOUI
6b394302c1 feat(xo-web/sortedTable): mutualize actions (#3594) 2018-11-08 14:40:54 +01:00
Julien Fontanet
00e1601f85 chore(xo-server): use VM.domain_type when available (#3664)
And fallback to our previous detection when unavailable.

Starting from this commit, `virtualizationMode` will no longer contain `'pvhvm'`, this must be computed UI side by using both `virtualizationMode` and `xenTools` properties.
2018-11-08 14:37:47 +01:00
Rajaa.BARHTAOUI
b75e746586 fix(xo-web/StrongConfirm): input loses focus (#3649) 2018-11-08 11:38:17 +01:00
Enishowk
32a9fa9bb0 feat(xo-web/migration): auto-select host/SR when there's only one (#3654)
Fixes #3502
2018-11-08 11:30:38 +01:00
badrAZ
79d68dece4 fix(xo-server/xapi-stats): re-fetch host stats if VM missing (#3660) 2018-11-08 11:28:17 +01:00
Julien Fontanet
1701e1d4ba feat(xo-server/_importVdiContent): require length in dev mode 2018-11-08 10:45:11 +01:00
Julien Fontanet
497b3eb296 feat(xo-server/disk.import): extract length from header 2018-11-08 10:44:35 +01:00
Julien Fontanet
ecfafa0fea chore: npm → yarn 2018-11-07 22:24:46 +01:00
Julien Fontanet
def66d8218 chore(xapi-explore-sr): remove Jest config/scripts 2018-11-07 22:23:17 +01:00
Julien Fontanet
eeb08abec2 chore(xapi-explore-sr): use Babel 7 2018-11-07 22:18:58 +01:00
Julien Fontanet
90923c657d chore: re-format code 2018-11-07 18:37:23 +01:00
Julien Fontanet
4ff6eeb424 chore: update dependencies 2018-11-07 18:15:57 +01:00
Julien Fontanet
2d98fb40f1 feat(xo-server/_assertConsistentHostServerTime): display delta 2018-11-07 17:06:17 +01:00
Julien Fontanet
256a58ded2 feat(xo-server/_assertConsistentHostServerTime): threshold 2s → 30s 2018-11-07 17:00:29 +01:00
badrAZ
bf3b31a9ef fix(xo-web/logs): properly display restore failures (#3648) 2018-11-07 15:20:25 +01:00
badrAZ
7fc8d59605 feat(xo-server/backup-ng): warnings for missing VMs (#3647) 2018-11-07 13:12:26 +01:00
Julien Fontanet
1a39b2113a fix(docs): XO requires Node 8 2018-11-07 10:53:02 +01:00
badrAZ
cb9f3fbb2c chore(xo-server/backup-ng): restore tasks documentation (#3652) 2018-11-07 10:44:33 +01:00
badrAZ
487f413cdd feat(xo-web/backup): move "restore/file-restore" to Backup NG view (#3610)
Fixes #3499
2018-11-07 10:22:31 +01:00
Pierre Donias
f847969206 fix(xo-server/patching): correctly ignore upgrade patches (#3651)
Possibly related to support#1009
2018-11-07 10:10:36 +01:00
Julien Fontanet
5d9aad44c2 Merge branch 'xapi-explore-sr/master' 2018-11-06 18:26:44 +01:00
Julien Fontanet
ba2027e6d7 feat(xapi-explore-sr): move all files to packages/xapi-explore-sr 2018-11-06 18:19:39 +01:00
Julien Fontanet
087da9376f Merge branch 'xo-import-servers-csv/master' 2018-11-06 18:11:58 +01:00
Julien Fontanet
218e3b46e0 feat(xo-import-servers-csv): move all files to packages/xo-import-servers-csv 2018-11-06 17:55:20 +01:00
Rajaa.BARHTAOUI
f9921e354e feat(xo-web/StrongConfirm): press Enter to validate (#2890)
Fixes #2735
2018-11-06 15:29:01 +01:00
badrAZ
341148a7d3 fix(xo-web/logs): fix restarting VMs with concurrency issue (#3634)
Fixes #3603
2018-11-06 13:45:30 +01:00
Julien Fontanet
7216165f1e chore: update dependencies 2018-11-06 13:27:33 +01:00
Julien Fontanet
a9557af04b fix(CHANGELOG): fix versions 2018-11-05 16:48:09 +01:00
Julien Fontanet
abb80270ad feat(xo-web): 5.29.3 2018-11-05 16:47:23 +01:00
Julien Fontanet
72e93384a5 feat(xo-server): 5.29.4 2018-11-05 16:46:54 +01:00
Julien Fontanet
663b1b76ec fix(CHANGELOG): move entry to correct release 2018-11-05 16:46:18 +01:00
Julien Fontanet
24b8c671fa fix(xo-server/mergeVhd): use remote options 2018-11-05 16:41:37 +01:00
Julien Fontanet
986fec1cd3 feat(xo-server): pass config to workers 2018-11-05 16:41:37 +01:00
badrAZ
f6c2cbc5cf chore(xo-web/backup): devs can create legacy backups (#3645)
Fixes #3624
2018-11-05 14:40:42 +01:00
Pierre Donias
289ed89a78 fix(xo-server/vm.create): dont extract cpus & memoryMax from params (#3646)
Fixes #3644
2018-11-05 14:34:58 +01:00
Enishowk
73de421d47 feat(xo-web/vm/advanced): add nested virt toggle (#3625)
Fixes #3619
2018-11-05 14:17:19 +01:00
badrAZ
dc1eb82295 chore(xo-server/backup-ng): tasks' documentation (#3640) 2018-11-05 14:16:36 +01:00
Enishowk
6629c12166 fix(xo-web/form/Toggle): dont emit onChange if disabled (#3643)
fix(xo-web/form/Toggle): dont emit onChange if disabled
2018-11-05 14:09:13 +01:00
badrAZ
ec5bc1db95 fix(xo-web/backup-ng-logs): incorrect started jobs filter (#3641)
Fixes #3636
2018-11-05 12:09:52 +01:00
Julien Fontanet
ac2c40c842 fix(xo-server/vm.*): ensure force params are optional 2018-11-05 10:42:28 +01:00
Julien Fontanet
61bf669252 feat(fs/nfs): ensure mount error not hidden 2018-11-05 10:11:57 +01:00
Julien Fontanet
4105c53155 chore(CHANGELOG): 5.28.1 2018-11-05 09:59:36 +01:00
Julien Fontanet
aeab2b2a08 feat(xo-web): 5.29.2 2018-11-05 09:57:50 +01:00
Julien Fontanet
95e33ee612 feat(xo-server): 5.29.3 2018-11-05 09:57:01 +01:00
Julien Fontanet
093bda7039 feat(fs): 0.4.1 2018-11-05 09:53:43 +01:00
Julien Fontanet
4e35b19ac5 fix(xo-web/xoa/update): fix re-registration 2018-11-05 09:46:22 +01:00
Julien Fontanet
244d8a51e8 chore(xo-web/xoa/update): dont hide error 2018-11-05 09:42:59 +01:00
Julien Fontanet
9d6cc77cc8 chore(changelog): add timeout entry 2018-11-03 17:45:50 +01:00
Julien Fontanet
d5e0150880 chore: update promise-toolbox to v0.11
`timeout()` now provides better stack traces and support 0 delay to
disable the timeout.
2018-11-03 17:45:50 +01:00
Julien Fontanet
5cf29a98b3 feat(fs): configurable timeout 2018-11-03 17:45:50 +01:00
Julien Fontanet
165c2262c0 fix(nfs): default timeout 10s → 10m 2018-11-03 17:45:50 +01:00
badrAZ
74f5d2e0cd fix(xo-server/backup-ng): "vms" should be a dictionary (#3635) 2018-11-02 16:29:44 +01:00
badrAZ
2d93456f52 feat(xo-server/backup-ng): log scheduled VMs if concurrency above 0 (#3633)
See #3603
2018-11-02 14:56:46 +01:00
Julien Fontanet
fd401ca335 fix(fs/nfs): opts param is optional 2018-11-02 10:09:19 +01:00
Julien Fontanet
97ba93a9ad chore(fs): configurable mounts dir (#3413) 2018-11-02 09:37:35 +01:00
Pierre Donias
0788c25710 feat(xo-web): 5.29.1 2018-10-31 17:20:15 +01:00
Julien Fontanet
82bba951db feat(xo-web/xoa-updater/logs): from old to new
Fixes #2708
2018-10-31 17:18:53 +01:00
Julien Fontanet
6efd611b80 feat(xo-web/xoa/update): use pre for updater logs 2018-10-31 17:18:53 +01:00
Julien Fontanet
b7d43b42b9 fix(xo-web/xoa/update): toggleState not compatible with ActionButton 2018-10-31 17:18:52 +01:00
Julien Fontanet
801b71d9ae fix(xo-web/xoa/update): typo 2018-10-31 17:18:52 +01:00
Pierre Donias
0ff7c2188a feat(xo-server): 5.29.2 2018-10-31 16:56:23 +01:00
Julien Fontanet
bc1667440f feat(log): 0.1.4 2018-10-31 16:55:11 +01:00
Julien Fontanet
227b464a8e fix(log): paths in transports/* 2018-10-31 16:54:35 +01:00
Pierre Donias
f6c43650b4 feat(xo-server): 5.29.1 2018-10-31 16:43:29 +01:00
Pierre Donias
597689fde0 chore(xo-server): use log 0.1.3 2018-10-31 16:42:03 +01:00
Julien Fontanet
da6b71fde8 feat(log): 0.1.3 2018-10-31 16:39:20 +01:00
Julien Fontanet
5f2590c858 fix(log): remove transports symlink
Issue with publication.
2018-10-31 16:38:23 +01:00
Julien Fontanet
37b0867151 feat(log): 0.1.1 2018-10-31 16:31:22 +01:00
Julien Fontanet
85031cfb9d fix(log): publish configure.js and transports 2018-10-31 16:30:55 +01:00
Pierre Donias
a13f86fb7c chore(CHANGELOG): 5.28.0 2018-10-31 16:03:35 +01:00
Pierre Donias
7cbc5e642f feat(xo-web): 5.29.0 2018-10-31 15:59:53 +01:00
Pierre Donias
48d4abc259 feat(xo-server): 5.29.0 2018-10-31 15:58:52 +01:00
Pierre Donias
c805f3b1a7 feat(xo-server-usage-report): 0.7.0 2018-10-31 15:55:26 +01:00
Pierre Donias
40212582a9 feat(xen-api): 0.20.0 2018-10-31 15:53:40 +01:00
Pierre Donias
2c875928de feat(vhd-lib): 0.4.0 2018-10-31 15:51:49 +01:00
Pierre Donias
c24eb9778e feat(complex-matcher): 0.5.0 2018-10-31 15:48:31 +01:00
Pierre Donias
eb079b1360 feat(fs): 0.4.0 2018-10-31 15:46:49 +01:00
Pierre Donias
120a519303 chore(@xen-orchestra/log): packages should not be private 2018-10-31 15:32:17 +01:00
Pierre Donias
95def95678 feat(log): 0.1.0 2018-10-31 15:26:58 +01:00
Pierre Donias
8274a00f91 feat(xo-common): 0.1.2 2018-10-31 15:21:09 +01:00
Pierre Donias
3c6c4976cd feat(xo-server-backup-reports): 0.15.0 2018-10-31 15:19:21 +01:00
Julien Fontanet
0fd35b1679 feat(xo-web/xoa): product version and pkgs list (#3621)
Fixes #3560
2018-10-31 10:49:10 +01:00
Enishowk
3c931604be fix(xo-web/backup-ng/utils/FormFeedback): fix incorrect prop type (#3604)
See #2578
2018-10-31 10:14:41 +01:00
Julien Fontanet
02dddbd662 chore(xo-web/xoa/update): rewrite (#3620) 2018-10-31 09:46:44 +01:00
Julien Fontanet
675763d039 chore(xo-web): mutualize chain decoration 2018-10-30 18:40:21 +01:00
Julien Fontanet
63acc7ef32 fix(xo-server/bin): import → require 2018-10-30 17:45:02 +01:00
Enishowk
cbd78bdfef chore(xo-server): use @xen-orchestra/log to handle global errors (#3618)
Fixes #3616
2018-10-30 17:38:24 +01:00
Julien Fontanet
a09a2ed6c3 chore(log/configure): explicit test 2018-10-30 17:14:44 +01:00
Enishowk
7d18a6d8a9 fix(xo-web/Home/NoObjects): only subscribe to servers if admin (#3613)
Fixes #2335
2018-10-30 15:58:06 +01:00
Julien Fontanet
65a5984d4c fix(cron): prevent exceptions from breaking the job (#3617)
Fixes support#1038
2018-10-30 15:26:46 +01:00
badrAZ
d5f519bf5a feat(backup-ng): display logs for backup restoration (#3609)
Fixes #2511
2018-10-30 15:26:26 +01:00
badrAZ
bede39c8f3 fix(xo-server-usage-report): handle SR without container (#3614)
This is a work-around for an XO bug.

Related to #3600
2018-10-30 14:07:50 +01:00
badrAZ
a9e3682776 fix(xo-server-usage-report): all SRs display issue (#3615)
Introduced by #3508
2018-10-30 13:54:57 +01:00
Enishowk
87c3c8732f fix(xo-server/jobs): emit job:terminated even if job throws (#3593)
Fixes #3458
2018-10-30 13:39:49 +01:00
Enishowk
0011bfea8c feat(travis/tests): run tests on files that differs from master (#3599)
Fixes #2703
2018-10-30 11:57:26 +01:00
Pierre Donias
e047649c3b fix(xo-web/patches): ignore CDs with detached VBD (#3611)
Fixes support#1032
2018-10-30 09:53:11 +01:00
badrAZ
de397b63c5 feat(xo-web/sorted-table): "valuePath" property (#3607)
Fixes #3606
2018-10-30 09:42:13 +01:00
Julien Fontanet
75b7726fca chore: format YAML with Prettier 2018-10-29 13:29:30 +01:00
Julien Fontanet
d83a2366c2 chore(ci): dont test on Node 6 2018-10-26 16:47:33 +02:00
Julien Fontanet
2d4d653c55 chore: re-format code 2018-10-26 16:40:00 +02:00
badrAZ
c7a1d55f6f chore: rename freactal to reaclette (#3601) 2018-10-26 15:24:50 +02:00
Enishowk
46b5c5ccd1 feat(xo-server): Replace debug with @xen-orchestra/log for basic logging (#3579)
Fixes #3555
2018-10-26 14:14:17 +02:00
Jon Sands
4607417e7a chore(docs/backup troubleshooting): Parse Error with Delta Backup (#3588)
Also add note about OVA failure with xo-cli.
2018-10-25 23:52:48 +02:00
Julien Fontanet
76887c7e25 chore(xo-web/self/_getIpPoolPredicate): dont use include
`O(n)` → `O(1)`
2018-10-25 16:02:28 +02:00
Julien Fontanet
ab7cae5816 fix(xo-web/self): fix IP pool predicate selector (#3598) 2018-10-25 15:58:23 +02:00
badrAZ
b1ce389ad8 fix(xo-web/backup-ng): don't submit when retention is undefined (#3487) 2018-10-25 15:44:35 +02:00
badrAZ
52aa5ff780 feat(xo-server-backup-reports): support task warnings (#3596) 2018-10-25 12:22:35 +02:00
badrAZ
30372e511e feat(xo-server/backup-ng): consolidation of the restore logs (#3537) 2018-10-25 12:21:28 +02:00
Rajaa.BARHTAOUI
dc15a6282a feat(xo-web/sr/hosts, xo-web/host/srs): use SortedTable actions (#3539)
See #3179
2018-10-25 10:47:21 +02:00
badrAZ
97dcc204ef feat(xo-web/backup-ng/logs): support task warnings (#3591)
Fixes #3589
2018-10-25 09:31:23 +02:00
Julien Fontanet
ecda3e0174 feat(lint-staged): add formatting changes before testing (#3595)
So there won't be stylistic diffs between files and index if the test fails.
2018-10-25 09:16:21 +02:00
Rajaa.BARHTAOUI
8342bb2bc8 fix(xo-web/SortedTable): broken individual actions
Introduced by cdced7cdc1
2018-10-24 16:53:19 +02:00
badrAZ
51a137c4e5 feat(xo-server/schemas/log): task warning (#3590)
See #3589
2018-10-24 10:58:56 +02:00
Enishowk
a26ced5de9 chore(xo-web/backup-ng): rework the Schedule view (#3586)
Fixes #3491
2018-10-24 10:13:09 +02:00
badrAZ
85f0c69c03 chore(xo-server): use reaclette instead of @julien-f/freactal (#3587) 2018-10-23 17:57:00 +02:00
Julien Fontanet
3aac757ef5 feat(xo-web/selectors): cache ACLs resolution (#3584)
Fixes #3578
2018-10-23 14:50:09 +02:00
badrAZ
91541d0ba4 feat(xo-web/log): disable filters with no entries (#3442)
Fixes #3438
2018-10-23 12:01:26 +02:00
badrAZ
dfd66a56c3 feat(xo-server-usage-report): ability to send daily (#3582)
Fixes #3544
2018-10-23 09:20:11 +02:00
badrAZ
60f9393d29 fix(xo-web/scheduling): fix unselecting single value (#3577)
Fixes #3574
2018-10-22 23:36:44 +02:00
Rajaa.BARHTAOUI
cdced7cdc1 feat(xo-web/SortedTable): sort action by level (#3545)
Fixes #3168
2018-10-22 13:53:12 +02:00
Julien Fontanet
69709009ed fix(xo-web/backup-ng/new): fix timeout unit (#3575)
Fixes issue introduced in aa5b3dc42
2018-10-20 16:10:36 +02:00
Julien Fontanet
bf14560709 feat(xo-web/form/range): handle undefined value 2018-10-19 16:30:54 +02:00
Julien Fontanet
775b629ee9 fix(xo-web/form/range): fix required prop type 2018-10-19 16:30:54 +02:00
Julien Fontanet
ec9717dafb chore(xo-web/scheduling): compute TimePicker max step (#3568) 2018-10-19 16:22:25 +02:00
Julien Fontanet
0cd84ee250 chore(xo-server): move LVM start hook to file restore NG
Otherwise, I have a feeling that we may forget to migrate this code when
legacy backup code will be retired.
2018-10-19 11:10:36 +02:00
Pierre Donias
b3681e7c39 fix(xo-server/recomputeResourceSetsLimits): omit CR and DR VMs (#3561)
Fixes #3064
2018-10-19 09:58:39 +02:00
Pierre Donias
a7a7597d9a feat(xo-web/backup-ng/restore): show job in backup select (#3564)
Fixes #3264
2018-10-19 09:48:55 +02:00
badrAZ
bed3da81e1 feat(xo-web/scheduling): merge selection and interval tabs (#3519)
Fixes #1902
2018-10-19 09:20:51 +02:00
Pierre Donias
c43dc31a55 fix(CHANGELOG): missing PR links (#3562) 2018-10-18 18:50:19 +02:00
Enishowk
c5a21922d1 chore(backup-ng): collapse advanced settings by default (#3559)
Fixes #3551
2018-10-18 14:28:35 +02:00
Pierre Donias
2ae660a46b fix(xo-web/settings/acls): freactal to fix lifecycle issues (#3548) 2018-10-18 13:47:48 +02:00
Julien Fontanet
f6fcae4489 chore(xo-server/utils): remove unused pDebug 2018-10-18 10:53:55 +02:00
Enishowk
e0a3b8ace8 feat(xo-web/backup-ng/overview): show advanced settings with non-default values (#3554)
Fixes #3549
2018-10-18 10:46:15 +02:00
badrAZ
b67231c56b feat(xo-server/backup-ng): report missing VMs (#3522)
Fixes #3434
2018-10-18 10:23:56 +02:00
Enishowk
aa5b3dc426 chore(xo-web/backup-ng): timeout is in hours (#3553)
Fixes #3550
2018-10-17 19:24:47 +02:00
Enishowk
1a528adfbb feat(complex-matcher) : raw numbers can match strings (#3552)
Fixes #2906
2018-10-17 18:24:49 +02:00
Enishowk
64d295ee3f chore(xo-web): remove unnecessary prop-types-decorator (#3542) 2018-10-17 16:30:57 +02:00
Julien Fontanet
b940ade902 fix(xo-common/api-errors): predicate is optional (#3543) 2018-10-17 15:49:27 +02:00
Pierre Donias
37a906a233 fix(xo-server/VM/create): compute quotas from user inputs (#3546)
Fixes #2683
2018-10-17 14:55:48 +02:00
Rajaa.BARHTAOUI
e76603ce7e feat(xo-web/settings/acls): use SortedTable actions (#3536)
See #3179
2018-10-17 14:07:42 +02:00
Nicolas Raynaud
aca9aa0a7a feat(vhd-lib/createReadableSparseStream): expose stream.length (#3526) 2018-10-16 17:16:59 +02:00
Pierre Donias
6d20ef5d51 fix(xo-server/disk.create): handle resource set not found (#3530)
Fixes #2814
2018-10-16 16:58:13 +02:00
Pierre Donias
4d18ab1ae0 fix(xo-web/new VM): missing cloud configs in some cases (#3535)
Fixes #3532
2018-10-16 14:14:46 +02:00
Julien Fontanet
fa5c707fbc fix(xo-server/worker): use Bluebird as Promise (#3538)
Similar to 6c6dfa9ac4 but for the worker processes.
2018-10-16 11:53:41 +02:00
Rajaa.BARHTAOUI
37b9d8ec10 feat(xo-web/settings/logs): use SortedTable actions (#3528)
See #3179
2018-10-16 11:52:05 +02:00
Enishowk
61db0269a2 feat(fs): add timeouts to atomic operations (#3534)
Fixes #3467
2018-10-16 10:38:46 +02:00
Rajaa.BARHTAOUI
a8ad13f60e feat(xo-web/settings/users): use SortedTable actions (#3531)
See #3179
2018-10-16 10:31:29 +02:00
badrAZ
f14dd04ea7 feat(xo-server/backup-ng): log the restore tasks (#3452) 2018-10-15 18:08:46 +02:00
badrAZ
0add8cd5a3 fix(CHANGELOG): missing PR/issue link (#3529) 2018-10-15 14:55:49 +02:00
Pierre Donias
16cc539a57 fix(xo-web/pool/patches): missing withRef (#3527)
Fixes #3523
2018-10-15 09:49:31 +02:00
Julien Fontanet
5ba25a34cb chore(xo-server/jobs): move plugins:registered listener out of start 2018-10-12 14:02:46 +02:00
Julien Fontanet
61de65fc21 chore(xo-server/jobs): handle failing getLogger 2018-10-12 14:01:54 +02:00
Julien Fontanet
5195539a95 chore(xo-server): remove testing on disabled remotes 2018-10-12 13:40:59 +02:00
Julien Fontanet
ce93fb0e4c fix(xo-server): fix removing broken remotes (#3521)
Fixes #3327
2018-10-12 11:36:40 +02:00
badrAZ
3cb58ed700 fix(xo-web/backup-ng): deleted remote issue (#3520) 2018-10-12 11:32:41 +02:00
Julien Fontanet
bb48c960fe feat(vhd-lib/createSyntheticStream): add length property to stream (#3517)
Expose the file size on the VHD stream, necessary to be compatible with a future version of vhd-tool (f978789dc4).
2018-10-11 17:57:31 +02:00
Nicolas Raynaud
286a0031dd VHD: add test on stream length 2018-10-11 08:40:00 -07:00
Nicolas Raynaud
dcbd7e1113 remove intellij file 2018-10-11 08:36:44 -07:00
Nicolas Raynaud
0a43454c8a VHD: add test on stream length 2018-10-11 08:23:45 -07:00
Julien Fontanet
f5f1491e47 fix(changelog): packages by publish order
Or inverse dependebcy order.
2018-10-11 16:50:49 +02:00
Julien Fontanet
e935ae567f async createSyntheticStream is a breaking change 2018-10-11 16:50:04 +02:00
Julien Fontanet
3f08f099fe fix sync uses of createSyntheticStream 2018-10-11 16:49:29 +02:00
Nicolas Raynaud
18a5ba0029 VHD: remove unnecessary rounding 2018-10-11 07:17:15 -07:00
Nicolas Raynaud
c426d0328f VHD: revert version increment 2018-10-11 07:15:50 -07:00
Nicolas Raynaud
91b2456c15 VHD: expose file length on the stream object 2018-10-10 18:36:54 -07:00
Nicolas Raynaud
585aa74e0c Merge branch 'master' into nr-vhd-stream-length
# Conflicts:
#	CHANGELOG.md
2018-10-10 18:35:20 -07:00
Nicolas Raynaud
eefaec5abd VHD: expose file length on the stream object 2018-10-10 16:35:46 -07:00
Nicolas Raynaud
c7a5eebff6 VHD: expose file length on the stream object 2018-10-10 16:28:59 -07:00
badrAZ
f077528936 feat(xo-server-usage-report): add top 3 IOPS VM usage (#3463)
Fixes #3308
2018-10-10 16:40:26 +02:00
badrAZ
39728974b1 feat(xo-server-backup-reports): add job and run ID (#3516)
Fixes #3488
2018-10-10 16:00:27 +02:00
badrAZ
e14585895b fix(xo-server-usage-report): handle fetching missing patches failure (#3515)
Fixes #3510
2018-10-10 15:39:06 +02:00
badrAZ
0999042718 feat(xo-web/backup-ng/new): link to plugins setting (#3514)
Fixes #3457
2018-10-10 14:45:28 +02:00
badrAZ
4e2e669533 feat(xo-web/new-vm): display warning when memory < static_min (#3513)
Fixes #3496
2018-10-10 14:16:37 +02:00
badrAZ
de266ae6a8 chore(xo-server-usage-report): rename top VMs/hosts header (#3511) 2018-10-10 11:27:22 +02:00
badrAZ
d7cd87a6e4 feat(xo-server-usage-report): add top 3 SRs by IOPS (#3508)
Fixes #3306
2018-10-10 11:26:33 +02:00
Julien Fontanet
c5aabbadc2 feat(xo-web/self): order resource sets by name (#3507)
Fixes support#984.
2018-10-09 16:38:06 +02:00
badrAZ
36a5e3c2ab feat(xo-server-usage-report): add VM IOPS read/write/total (#3455)
Fixes #3309
2018-10-08 17:18:22 +02:00
badrAZ
f475261b9a chore(xo-server-usage-report): improve implementation (#3472) 2018-10-08 16:51:56 +02:00
Julien Fontanet
62dce8f92a chore(package): update dependencies 2018-10-08 13:50:50 +02:00
Julien Fontanet
e6d90d2154 feat(xen-api): _wrapRecord() (#3448)
Objectives:

- reduced memory usage and perf enhancement due to:
   - mutualization of fields and methods via prototype
   - mutualization of hidden classes
- easier manipulation via helper methods:
   - `await pool.set_name_label('my pool')`
   - `await pool.update_other_config({ foo: 'bar', baz: null })`
2018-10-08 10:58:03 +02:00
badrAZ
b5d823ec1a fix(xo-server-usage-report): dont show evolution if 0 (#3471) 2018-10-08 10:27:15 +02:00
badrAZ
a786c68e8b fix(xo-server-usage-report): fix HTML (#3473) 2018-10-05 16:37:14 +02:00
Pierre Donias
e6fa00c4d8 chore(CHANGELOG): 5.28.0 2018-10-05 14:03:50 +02:00
Pierre Donias
5721fac793 feat(xo-web): 5.28.0 2018-10-05 14:01:32 +02:00
Pierre Donias
674ed4384a feat(xo-server): 5.28.0 2018-10-05 14:00:27 +02:00
Pierre Donias
1d7d83f8c6 feat(xo-acl-resolver): 0.3.0 2018-10-05 13:51:18 +02:00
Pierre Donias
f812cc2729 feat(xo-server-usage-report): 0.6.0 2018-10-05 13:49:36 +02:00
Pierre Donias
abc50a5e84 feat(xo-vmdk-to-vhd): 0.1.5 2018-10-05 13:47:44 +02:00
Pierre Donias
e94cae3044 feat(vhd-lib): 0.3.2 2018-10-05 13:45:06 +02:00
Pierre Donias
0b35a35576 feat(xo-server/vm.clone): add admin ACL and allocate Self resources (#3493)
Fixes #3139
2018-10-05 12:07:28 +02:00
badrAZ
0253c63db3 feat(acls): allow VM operators to create/delete snapshots (#3482)
Fixes #3443
2018-10-05 11:48:42 +02:00
Julien Fontanet
0d3b2bc814 fix(vhd-lib,xo-vmdk-to-vhd): add polyfill for Symbol.asyncIterator (#3492)
Fixes part of #3468.
Fixes tests on CI.
2018-10-05 10:44:03 +02:00
Julien Fontanet
65307e5bc7 fix(xo-server/xapi#exportVm): destroy snapshot on getResource failure 2018-10-05 09:51:48 +02:00
Julien Fontanet
90de47d708 chore(xo-server/xapi#exportVm): minor code improvement 2018-10-05 09:51:48 +02:00
Julien Fontanet
72a4179c03 chore(xo-server/xapi): add metadata to {export,import}Vm errors 2018-10-05 09:51:48 +02:00
badrAZ
4eee195d21 fix(CHANGELOG): add entries related to #3475 (#3489) 2018-10-04 16:56:17 +02:00
badrAZ
9488711406 feat(xo-server-usage-report): top 3 used SRs instead of big SRs (#3475)
Fixes #3307
2018-10-04 16:08:18 +02:00
Julien Fontanet
4cf04aca72 feat(cr-seed-cli): 0.2.0 2018-10-04 15:09:22 +02:00
Julien Fontanet
410d6762bf fix(cr-seed-cli): set xo:backup:exported on snapshot
Related to bdefd0bcd
2018-10-04 15:08:16 +02:00
Julien Fontanet
0a95426e63 fix(xo-server/delta NG): detection of removed disks
Related to eb9655125
2018-10-04 14:53:33 +02:00
Julien Fontanet
4ec4970d49 chore(async-map): build for tests 2018-10-03 21:27:56 +02:00
Julien Fontanet
e57ae0a8ce chore(xo-server): add support for ?? 2018-10-03 16:00:24 +02:00
badrAZ
1e7852369f feat(xo-server/xapi-stats): expose VM IOPS metric (#3454) 2018-10-03 15:50:35 +02:00
Julien Fontanet
bdefd0bcd8 feat(xo-server/delta NG): mark successfully exported snapshots (#3485)
Allows runs after failure/interruption to be deltas.
Also, allows some schedules to only do rolling snapshots without breaking the exports.

Thanks a lot to @Samuel-BF for PR #3466.
2018-10-03 15:36:08 +02:00
badrAZ
fa88e1789c fix(xo-web/backup-ng/new): fix retention default value (#3486) 2018-10-03 15:26:48 +02:00
Pierre Donias
df90094cae feat(xo-web/pool/patches): extra modal before bulk install (#3484)
Fixes #3252
2018-10-03 15:15:04 +02:00
Pierre Donias
efdbc18a0a feat(xo-web/home/pool): show # of *unique* available patches (#3483)
Fixes #3321
2018-10-03 09:17:35 +02:00
Julien Fontanet
fc1dd3ce09 chore(xo-cli): got → http-request-plus 2018-10-02 20:19:43 +02:00
Julien Fontanet
10aff53d2c chore(xo-server-cloud): superagent → http-request-plus 2018-10-02 19:57:27 +02:00
Pierre Donias
85c3d64c04 feat(xo-web/host/network): private networks (#3481)
Fixes #3387
2018-10-02 14:42:24 +02:00
badrAZ
5a71ab53be feat(xo-acl-resolver): allow ACLs on VM snapshots (#3480)
Related to #3443
2018-10-02 13:33:26 +02:00
Julien Fontanet
d022b40732 chore: update dependencies 2018-10-02 12:01:14 +02:00
Pierre Donias
e105c0aad1 feat(xo-web/host/networks): remove "Add network" button (#3478)
Fixes #3386
2018-10-02 11:38:28 +02:00
Julien Fontanet
eb9655125c fix(xo-server/delta NG): handle removed disks (#3479) 2018-10-02 11:31:11 +02:00
Julien Fontanet
a10fea2823 chore(xo-server/xapi/utils): remove NULL_REF in favor of xen-api 2018-10-02 11:07:19 +02:00
badrAZ
0c05d89d3f fix(xo-web/VM/snapshot): allow VM admin to access snapshot tab (#3477) 2018-10-02 10:52:36 +02:00
Pierre Donias
d600d4cc28 chore(CHANGELOG): 5.27.1 2018-09-28 17:08:42 +02:00
Pierre Donias
4f0e5317ed feat(xo-web): 5.27.1 2018-09-28 17:05:40 +02:00
Pierre Donias
fce7c7fd49 feat(xo-server): 5.27.2 2018-09-28 17:04:48 +02:00
Pierre Donias
929ca767ca feat(xo-vmdk-to-vhd): 0.1.4 2018-09-28 17:01:43 +02:00
Pierre Donias
342c1bc6fa feat(vhd-lib): 0.3.1 2018-09-28 16:58:46 +02:00
Pierre Donias
317e301067 feat(fs): 0.3.1 2018-09-28 16:56:01 +02:00
Julien Fontanet
ac5741a341 fix(xo-server/deleteVm): build disks list before deleting VM (#3465)
Otherwise there is a race condition and VBD records might have been removed from cache before listing the VM disks due to destroying the VM.
2018-09-28 16:48:21 +02:00
badrAZ
3f1fb7092b fix(xo-web/modal#form): prevent default behavior of submit (#3462) 2018-09-28 11:42:47 +02:00
Julien Fontanet
7298a8b8f0 fix(fs/NfsHandler): race conds on sync() (#3460)
Fixes #3380
2018-09-28 11:40:12 +02:00
Julien Fontanet
856924c970 chore(log): remove @babel-polyfill dep 2018-09-26 17:41:43 +02:00
Julien Fontanet
9a285d280f chore(fs/NfsHandler): merge _loadRealMounts and _matchesRealMount in _sync 2018-09-26 17:00:47 +02:00
Julien Fontanet
9c3fc56d4a chore(fs/NfsHandler#_umount): remove unused remote param 2018-09-26 17:00:47 +02:00
Julien Fontanet
aaaee45eeb chore(xo-server): remove @babel/polyfill (#3453)
Fixes #2580
Fixes #2820
2018-09-26 14:22:02 +02:00
Nicolas Raynaud
ac2ab21826 fix(vhd-lib): fix geometry computation for more than 2^28 sectors (#3451)
Fixes https://gitlab.com/vates/xoa-support/issues/942
It was a bug in the disk geometry computation.
2018-09-25 14:51:17 +02:00
badrAZ
b22514646e feat(xo-web/backup-ng/overview): display the schedule's name (#3445)
Fixes #3444
2018-09-24 13:43:49 +02:00
Julien Fontanet
c7ab1ddb0c chore: update dependencies 2018-09-24 13:39:31 +02:00
Pierre Donias
7ddc595a1c fix(xo-web/file-restore): incorrect line-through on similar filenames (#3447) 2018-09-24 11:09:45 +02:00
Pierre Donias
4147800266 fix(xo-web/file-restore): ensure folder path trailing slash (#3446) 2018-09-24 10:52:48 +02:00
Pierre Donias
99e6d54647 chore(CHANGELOG): 5.27.0 2018-09-24 10:01:39 +02:00
Julien Fontanet
dac5901c6b feat(xo-server): 5.27.1 2018-09-22 14:01:24 +02:00
Julien Fontanet
308928a7d4 feat(xen-api): 0.19.0 2018-09-22 14:00:55 +02:00
Julien Fontanet
e6e3d2cd52 chore: update http-request-plus to 0.6.0 2018-09-22 13:06:30 +02:00
Pierre Donias
2e01de7ff8 feat(xo-web): 5.27.0 2018-09-21 18:02:57 +02:00
Pierre Donias
90f94da4e4 feat(xo-server): 5.27.0 2018-09-21 18:01:27 +02:00
Pierre Donias
29b5acef3f chore(xo): packages should not be private 2018-09-21 17:50:49 +02:00
Pierre Donias
599b094b50 feat(xo-server-backup-reports): 0.14.0 2018-09-21 17:43:41 +02:00
Julien Fontanet
7c6e423d24 fix(Backup NG): remove all unnecessary snapshots (#3439)
Even those from other schedules.

Fixes #3132
2018-09-21 17:37:49 +02:00
badrAZ
82956af785 fix(xo-web/logs): fix @xen-orchestra/log import (#3441) 2018-09-21 15:36:54 +02:00
badrAZ
6ca09dc9fe feat(xo-web/vm/tab-advanced): ability to set the NIC type (#3440)
Fixes #3423
2018-09-21 15:30:23 +02:00
badrAZ
e0ecbab841 feat(xo-server/vm): ability to change NIC type (#3437)
See #3423
2018-09-21 14:42:43 +02:00
Julien Fontanet
83d1a5ff13 feat(defined): helpers to deal with undefined (#3436)
Extracted from xo-web.
2018-09-21 11:56:33 +02:00
badrAZ
a71740d49a feat(backup-ng): ability to restart all failed VMs (#3420)
Fixes #3339
2018-09-20 17:05:57 +02:00
Julien Fontanet
0215c19d1d feat(xo-server/proxy-console): work around missing host (#3435)
Fixes #3432
2018-09-20 14:47:39 +02:00
Julien Fontanet
ea1c3ab54a fix(xo-server/delta NG): dont start export before all targets ready (#3427)
Fixes #3424
2018-09-20 14:38:45 +02:00
badrAZ
b98b618be8 fix(xo-server-backup-reports): handle log not found (#3430) 2018-09-20 14:34:29 +02:00
Julien Fontanet
5e363761a2 fix(xo-server/proxy-console): pass hostname to net.connect 2018-09-20 10:25:47 +02:00
Julien Fontanet
62d48bd59d fix(async-map): apply → call 😖
Fixes #3431
2018-09-20 10:04:09 +02:00
badrAZ
a0049bae8d fix(xo-web/backup-ng): make log value dynamic in copy/report buttons (#3360)
Fixes #3273
2018-09-18 15:15:59 +02:00
Julien Fontanet
18660cb0e1 fix(async-map): accept objects as collection 2018-09-18 12:10:44 +02:00
Julien Fontanet
e3c6c1c1ca chore(async-map): use lodash/map import 2018-09-18 12:10:43 +02:00
badrAZ
56114a7d18 feat(xo-server-backup-report): ability to test the plugin (#3421) 2018-09-17 17:23:45 +02:00
Julien Fontanet
0fe70b1a91 feat(log): new lib to help logging (#3414)
Fixes #2414
Related to #1669
2018-09-17 17:02:27 +02:00
Julien Fontanet
527eb0b1e6 feat(async-map): better Promise.all + map (#3422) 2018-09-17 16:37:49 +02:00
Julien Fontanet
cfd6fd722a feat(mixin): split a class in independant parts (#3415) 2018-09-17 16:33:21 +02:00
badrAZ
42591bd4bd feat(xo-web/VM): display the PVHVM status (#3418)
Fixes #3014
2018-09-17 11:06:19 +02:00
Julien Fontanet
8689cff26b feat(emit-async): handle async listeners (#3416)
Extracted from xo-server.
2018-09-17 10:42:22 +02:00
badrAZ
b4e4d32255 feat(xo-web/backup-ng/overview): display transferred and merged data size (#3408) 2018-09-14 17:21:06 +02:00
Julien Fontanet
18c88ba770 feat(cr-seed-cli): CLI to help CR seeding (#3346) 2018-09-14 17:04:55 +02:00
badrAZ
d212168f59 feat(xo-web/backup-ng/new): use a modal for creating/editing a schedule (#3359)
Fixes #3138
2018-09-14 15:53:28 +02:00
Julien Fontanet
3625477187 fix(xo-web/xoa-updater): wait trial request before checking state (#3412)
Fixes #3407
2018-09-14 12:26:41 +02:00
Pierre Donias
9be8525439 await xoaState 2018-09-14 12:04:19 +02:00
Pierre Donias
6e013a0dc5 PR 2018-09-14 11:54:39 +02:00
Pierre Donias
06d555d4f9 fix(xo-web/xoa-updater): wait for trial request before checking trial state
Fixes #3407
2018-09-14 11:51:43 +02:00
Julien Fontanet
63fe0f2c88 fix(xo-server/importDeltaVm): dont fail on empty VBDs (#3410) 2018-09-14 10:37:09 +02:00
Julien Fontanet
2a276dfb99 changelog 2018-09-14 10:36:49 +02:00
Julien Fontanet
1f009ca954 fix(xo-server/importDeltaVm): dont fail on empty VBDs 2018-09-13 17:27:11 +02:00
badrAZ
5cf1ba41f3 feat(xo-web/modal#form): support an additional icon to the title (#3409) 2018-09-13 16:58:03 +02:00
badrAZ
1ef205cb74 feat(xo-web/backup-ng/new): tip for creating vms on a thin-provisioned storage (#3402)
Fixes #3334
2018-09-13 16:23:51 +02:00
Julien Fontanet
1e59af3ab2 fix(xo-server/deleteVm): dont delete VDIs/VIFs if destroy is blocked (#3406) 2018-09-13 11:44:17 +02:00
badrAZ
bb88b420c1 chore(xo-web/backup-ng/new): make "setSchedule" support multiple params (#3404) 2018-09-12 13:53:37 +02:00
badrAZ
e8475d144c chore(xo-web/backup-ng/new): improve new schedule implementation (#3348) 2018-09-12 13:43:02 +02:00
badrAZ
dedac62269 feat(xo-web): implementation of the modal dedicated to forms (#3358) 2018-09-11 17:31:20 +02:00
badrAZ
f8fdd888c4 fix(xo-web/remotes): error appears twice on testing (#3399) 2018-09-11 17:27:10 +02:00
Julien Fontanet
d8bd30e355 feat(xo-web/remotes): use WORKGROUP as default SMB domain (#3398) 2018-09-11 10:46:52 +02:00
badrAZ
4fec816274 feat(xo-web/settings/remotes): test on creation/edition (#3397)
See #3323
2018-09-11 10:09:16 +02:00
badrAZ
1211447e81 fix(xo-web/settings/remotes): rename connect(ed)/disconnect(ed) to enable(d)/disable(d) (#3396)
See #3323
2018-09-10 17:15:33 +02:00
Julien Fontanet
ed78f4c5ee fix(xo-server/backup NG): third time is the charm (sigh) 2018-09-10 10:59:56 +02:00
Julien Fontanet
4a2e9d4c88 fix(xo-server/backup NG): CancelToken.race → .source 2018-09-10 10:51:05 +02:00
Julien Fontanet
1807917204 fix(xo-server/backup NG): CancelToken#fork() no longer exists
Issue introduced in b3004a38a
2018-09-10 10:47:53 +02:00
Julien Fontanet
b3004a38aa chore: update promise-toolbox to v0.10 (#3392) 2018-09-07 14:34:47 +02:00
Pierre Donias
0ad6c073ee chore(CHANGELOG): 5.26.0 2018-09-07 11:39:26 +02:00
Pierre Donias
0abaadb391 feat(xo-web): 5.26.0 2018-09-07 11:37:12 +02:00
Pierre Donias
b43cf27479 feat(xo-server): 5.26.0 2018-09-07 11:36:20 +02:00
Julien Fontanet
bcab6bb584 fix(xo-server/listReplicatedVms): dont use snapshot_time (#3394)
It is not always set on VMs imported from snapshots, add a new metadata in `other_config` and use the timestamp in the name_label a fallback.

Fixes #3391
2018-09-07 11:31:57 +02:00
Pierre Donias
8213601df6 chore(xo-web/VM,host,pool,SR): better UUID display (#3390) 2018-09-05 16:44:18 +02:00
Pierre Donias
e7ad577661 feat(xo-server,xo-web/VM): start on specific host (#3389)
Fixes #3191
2018-09-05 16:39:12 +02:00
Julien Fontanet
070213dd7f fix(xo-server/collection/redis): ignore undefined values (#3388)
Fixes #3385
2018-09-05 15:18:47 +02:00
Julien Fontanet
395cbb33ef chore: update dependencies 2018-09-05 09:42:10 +02:00
Julien Fontanet
a429a7aa35 feat(babel-config): same targets for all builds 2018-09-04 16:43:42 +02:00
Julien Fontanet
b70e09937b fix(babel-config): dont ignore pkg.browserslist entry 2018-09-04 16:41:28 +02:00
Pierre Donias
109ff4a4da feat(xo-web/backupNg): support restoring directories (#3384)
Fixes #1924
See #3300
2018-09-04 16:00:42 +02:00
Pierre Donias
0e185ab92a fix(xo-web/Backup NG): remove unsupported TAR file restore option (#3383) 2018-09-03 16:50:36 +02:00
Julien Fontanet
aefb76a4f6 fix(xo-server/file restore): support trailing slashes 2018-09-03 16:40:35 +02:00
Julien Fontanet
fe653dc7dd feat(xo-server): add job name in replicated VMs (#3379)
See support#891
2018-09-03 14:05:32 +02:00
Julien Fontanet
8b5c0e706c chore(xo-server/collection#first): returns undefined instead of null (#3382)
Fixes an issue introduced in 1407fb7bab in
`Remotes#getRemote()`.
2018-09-03 12:03:50 +02:00
Pierre Donias
d25584edf9 feat(xo-web/tasks): show finished tasks (#3377)
Fixes #3266
2018-08-31 17:19:03 +02:00
Pierre Donias
496ca2c716 fix(xo-web/XoItem): link should not open in new tab by default (#3376) 2018-08-31 14:40:00 +02:00
Julien Fontanet
4a09074a40 chore: update yarn.lock 2018-08-31 14:30:59 +02:00
Julien Fontanet
385fd80bb9 chore(xo-server-transport-xmpp): use Babel 7 2018-08-31 14:30:59 +02:00
Julien Fontanet
b6818abd0d chore(xo-server-transport-slack): use Babel 7 2018-08-31 14:30:59 +02:00
Julien Fontanet
45b5d10f1b chore(xo-server-transport-nagios): use Babel 7 2018-08-31 14:30:59 +02:00
Julien Fontanet
7866a265fe chore(xo-server-transport-email): use Babel 7 2018-08-31 14:30:59 +02:00
Julien Fontanet
774c0d09b1 chore(xo-server-auth-saml): use Babel 7 2018-08-31 14:30:59 +02:00
Julien Fontanet
df0029db3b chore(xo-server-auth-google): use Babel 7 2018-08-31 14:30:59 +02:00
Julien Fontanet
c1a5364448 chore(xo-server-auth-github): use Babel 7 2018-08-31 14:30:58 +02:00
Julien Fontanet
557ba1a4bc chore(xo-lib): use Babel 7 2018-08-31 14:30:58 +02:00
Julien Fontanet
bf932aada1 chore(xo-common): use Babel 7 2018-08-31 14:30:58 +02:00
Pierre Donias
2304deab3f fix(xo-web/vm/disks): individual actions 2018-08-31 14:18:14 +02:00
Julien Fontanet
ea9c0cfb10 fix(xo-web): export/import from Starter Edition 2018-08-31 13:14:31 +02:00
Pierre Donias
2fd5a6501b feat(xo-web/menu): hide Tasks entry for self users (#3373)
Fixes #3311
2018-08-30 15:44:30 +02:00
Pierre Donias
0ca5a32142 feat(xo-web/backup ng/restore): sort backups in select (#3374)
Fixes #3294
2018-08-30 13:38:02 +02:00
Julien Fontanet
f55f812d30 fix(linting): use legacy decorators 2018-08-30 11:53:27 +02:00
Julien Fontanet
98bbd53c28 fix(xo-server/log.delete): delSync does not exist
Fixes #3372
2018-08-29 18:21:48 +02:00
Julien Fontanet
1f0bfe2518 chore: update dependencies 2018-08-29 15:06:11 +02:00
Julien Fontanet
c5eae6e498 chore(xo-vmdk-to-vhd): remove unnecessary Babel runtime 2018-08-29 15:06:11 +02:00
Julien Fontanet
bfcdd29f10 chore(xo-collection): remove unnecessary Babel runtime 2018-08-29 15:06:11 +02:00
Julien Fontanet
8db0b59fe1 chore(fs): remove unnecessary Babel runtime 2018-08-29 15:06:10 +02:00
Julien Fontanet
6bc4c03b4c chore(vhd-cli): remove unnecessary Babel runtime 2018-08-29 15:06:10 +02:00
Julien Fontanet
4d63f93390 chore(vhd-lib): remove unnecessary Babel runtime 2018-08-29 15:06:10 +02:00
Pierre Donias
9722f2a5bd fix(xo-web/createVms): dont noop confirm modal rejection (#3371)
Fixes #3268
2018-08-29 13:14:07 +02:00
Pierre Donias
ee9c6817d6 fix(xo-web/new XOSAN): ignore detached local SRs (#3370) 2018-08-29 10:57:39 +02:00
Jon Sands
58564306ca (docu) fix backup grammar (#3369)
* (docu) fix backup grammar
2018-08-28 20:35:46 +02:00
Julien Fontanet
17c6f1762d chore: update dependencies 2018-08-28 20:29:29 +02:00
Julien Fontanet
17f13307bb fix(xo-server/listVmBackupsNg): dont fail on problematic remote (#3367)
Fixes #3365
2018-08-28 17:04:32 +02:00
Pierre Donias
a43c141ddd fix(xo-server/self): synchronize allocate and release together (#3368) 2018-08-28 16:54:17 +02:00
Pierre Donias
1e6da359cc fix(CHANGELOG): wrong xo-server version 2018-08-27 16:37:59 +02:00
Pierre Donias
626a9a777f feat(xo-web): 5.25.1 2018-08-27 16:35:04 +02:00
Pierre Donias
2768ad9e3b feat(xo-server): 5.25.2 2018-08-27 16:33:52 +02:00
Pierre Donias
3eec8f1a55 chore(CHANGELOG): 5.25.1 2018-08-27 16:28:36 +02:00
badrAZ
6148daa8b8 fix(CHANGELOG): move fix to correct release (#3357) 2018-08-27 16:17:54 +02:00
Julien Fontanet
338de7985f chore(docs/troubleshooting): must restart after memory setting 2018-08-27 15:59:33 +02:00
Julien Fontanet
df99528445 chore(CHANGELOG): improve import/export VDI entry 2018-08-27 14:41:10 +02:00
Julien Fontanet
890901366d fix(xo-server/{export,import}Vm): dont pass host (#3364)
Relies on redirection handling in `xen-api`.
2018-08-27 14:33:14 +02:00
Julien Fontanet
13271aa196 fix(CHANGELOG): move fix in next release 2018-08-27 11:45:59 +02:00
badrAZ
71aea20c7d fix(xo-server/jobs): fix race condition between end log and consolidation (#3238)
Fixes #3018
2018-08-27 11:44:50 +02:00
Julien Fontanet
b09da76b04 fix(xo-server/{export,import}Vdi): dont pass host (#3355)
Relies on redirection handling in `xen-api`.

Fixes #3354
2018-08-27 11:03:08 +02:00
Pierre Donias
ce35bbaeb4 fix(xo-server,xo-web): NFS remotes mount options (#3363)
Fixes #3361
2018-08-27 10:39:35 +02:00
Julien Fontanet
0034f0a1d3 feat(xo-server): 5.25.1 2018-08-23 13:47:52 +02:00
Julien Fontanet
e3391fa81f fix(xo-server/file restore): await addDirectory() 2018-08-23 13:47:30 +02:00
Pierre Donias
bacdc63c70 feat(xo-web): 5.25.0 2018-08-23 12:37:53 +02:00
Pierre Donias
b0285799c6 feat(xo-server): 5.25.0 2018-08-23 12:36:43 +02:00
Pierre Donias
f8b34c5d64 feat(@xen-orchestra/fs): 0.3.0 2018-08-23 12:33:21 +02:00
Pierre Donias
40f4a66bda feat(xo-server-backup-reports): 0.13.0 2018-08-23 12:30:56 +02:00
Pierre Donias
6125dae158 chore(CHANGELOG): 5.25.0 2018-08-23 12:26:45 +02:00
Pierre Donias
dfe4a934e9 feat(remotes): allow setting NFS mount options (#3353)
Fixes #1793
2018-08-23 11:34:56 +02:00
badrAZ
ecc33f46ab fix(xo-web/backup-ng/new): fix selected SRs issues (#3352)
Issue introduced in ec869ffd
2018-08-23 11:32:30 +02:00
Julien Fontanet
00d1985cf9 feat(xo-server/jobs): add job name to logs (#3351)
Fixes #3272
2018-08-23 11:29:42 +02:00
badrAZ
138aed8ae1 feat(xo-web/backup-ng/new): set default retention to 1 (#3290)
Fixes #3134
2018-08-23 10:18:29 +02:00
badrAZ
def9f947b7 feat(xo-web/new-vm): show error when getting coreOS default template fails (#3343)
Fixes #3227
2018-08-23 10:15:45 +02:00
Julien Fontanet
20dc4af4a4 fix(xo-server/importVdiContent): HOST → host 2018-08-22 18:07:57 +02:00
Julien Fontanet
4d2909567c feat(xo-server/snapshotVm): tag xo-disable-quiesce (#3350) 2018-08-22 15:15:05 +02:00
Julien Fontanet
92a93e4393 chore(xo-server): use xen-api 0.18.0 2018-08-21 18:27:45 +02:00
Julien Fontanet
389967d40c feat(xen-api): 0.18.0 2018-08-21 18:24:04 +02:00
Julien Fontanet
d66e8f29b7 feat(xen-api): add methods to mutate fields
- `setField()`
- `setFieldEntry()`
- `unsetFieldEntry()`
- `setFieldEntries()`
2018-08-21 18:15:38 +02:00
Julien Fontanet
3e9425bf79 feat(xen-api): add getRecordByUuid() 2018-08-21 17:49:37 +02:00
Julien Fontanet
41506e785e feat(xen-api/getRecord): add $id, $type and $ref props 2018-08-21 17:48:58 +02:00
Julien Fontanet
32d7ccfea5 feat(xen-api): expose null reference 2018-08-21 17:46:59 +02:00
Julien Fontanet
8a9f952ada feat(xen-api): support encoded credentials in URL 2018-08-21 17:46:18 +02:00
badrAZ
d15efae43f fix(xo-web/backup-ng/new): always show compression when full mode (#3345)
Fixes #3236
2018-08-21 10:12:36 +02:00
Julien Fontanet
627c06f4a8 fix(xo-acl-resolver): minor fixes
Due to 563969f2
2018-08-20 17:59:26 +02:00
Julien Fontanet
3e6201e93a chore(xo-server-auth-ldap): use Babel 7 2018-08-20 17:17:26 +02:00
Julien Fontanet
b941a649b5 chore(xo-server-usage-report): use Babel 7 2018-08-20 17:14:14 +02:00
Julien Fontanet
7b2b9ca618 chore(xo-server-load-balancer): use Babel 7 2018-08-20 17:12:33 +02:00
Julien Fontanet
404cf2b7e6 chore(xo-server-backup-reports): use Babel 7 2018-08-20 17:10:43 +02:00
Julien Fontanet
42698293de chore(xo-server-cloud): use Babel 7 2018-08-20 17:04:30 +02:00
Julien Fontanet
563969f2e9 chore(xo-acl-resolver): remove build step 2018-08-20 16:56:32 +02:00
Julien Fontanet
887e21daa5 chore: drop Node 4 compat for XO pkgs 2018-08-20 16:49:27 +02:00
badrAZ
b75a2a8dca feat(xo-web/backup-ng/new): move VMs' selection to dedicated card (#3338)
See #2711
2018-08-20 16:32:28 +02:00
badrAZ
31f32ba23c fix(xo-web/backup-ng/new): rename Export Ret. to Backup Ret. and Copy Ret. to Replication Ret. (#3337)
See #2711
2018-08-20 16:29:55 +02:00
badrAZ
936a4068d5 feat(xo-web/backup-ng/new): ignore replicated VMs by default in smart mode (#3312)
Fixes #2338
2018-08-20 16:29:10 +02:00
Julien Fontanet
266f287774 chore(xen-api): use Babel 7 2018-08-20 15:51:07 +02:00
badrAZ
5808485812 fix(CHANGELOG): missing release of backup-reports (#3341) 2018-08-20 13:51:46 +02:00
Olivier Lambert
b6dd83e32b feat: add local ext SR creation (#3335)
Fixes #3332
2018-08-19 17:12:36 +02:00
Julien Fontanet
2236bd71c4 chore: format with Prettier 2018-08-19 16:46:34 +02:00
badrAZ
ec869ffdd3 feat(xo-web/backup-ng/new): tip when thick-provisioned SR (#3333)
Fixes #3291
2018-08-17 15:31:06 +02:00
badrAZ
1aa4966a92 feat(xo-web/SelectTag): allow non existing tags (#3316) 2018-08-17 10:05:20 +02:00
badrAZ
235da199f9 chore(xo-web/backup-ng): remove useless computed (#3317) 2018-08-16 16:17:02 +02:00
badrAZ
4cad820271 fix(xo-web/select-objects): adding or removing an item from a select make the missing objects disappear (#3315) 2018-08-16 16:11:18 +02:00
Rajaa.BARHTAOUI
4a0b29e1f2 fix(xo-server/migrateVm): take VDIs of snapshot into account (#3298)
See #2557
2018-08-16 15:00:45 +02:00
badrAZ
1db9ca9e31 fix(xo-server/scheduling): default name should be an empty string (#3325) 2018-08-16 14:41:34 +02:00
Julien Fontanet
942ddfa742 feat(xo-server/remotes): sync on use (#3320)
Fixes #2852
2018-08-16 14:39:24 +02:00
Pierre Donias
355cddc044 feat(xo-web/VM): always show Convert button + better label (#3319)
Fixes #3201
2018-08-16 10:14:13 +02:00
Julien Fontanet
c23cccf2ce fix(xo-server/remotes): dont change enabled state on errors (#3318)
See #2852
2018-08-14 17:46:10 +02:00
Julien Fontanet
1407fb7bab chore(xo-server/remotes): merge _getRemote() and getRemote() 2018-08-14 17:10:18 +02:00
Julien Fontanet
4ba542b70f chore(xo-server/remotes): inline Remotes#create() 2018-08-14 17:10:18 +02:00
Julien Fontanet
76f75401ee chore(xo-server/remotes): store handler instances 2018-08-14 17:10:18 +02:00
Julien Fontanet
011cc7ad65 chore(xo-server/updateRemote): remove unused error param 2018-08-14 17:10:17 +02:00
Julien Fontanet
b966e6097f chore(xo-server/models/Remote): remove save() 2018-08-14 17:10:17 +02:00
Julien Fontanet
809e1a35cd chore(xo-server/models/Acl): inline create() and hash() 2018-08-14 17:10:17 +02:00
Julien Fontanet
8e7e1fccbe chore(xo-server/Model): remove unused validate() 2018-08-14 17:10:16 +02:00
Julien Fontanet
e86b30f205 chore(xo-server/Model): remove unused initialize() 2018-08-14 17:10:16 +02:00
Rajaa.BARHTAOUI
7dc0c4cf15 fix(xo-web/New VM): filter out SRs that are not in the template's pool (#3070)
Fixes #3068, fixes #3267
2018-08-14 16:51:32 +02:00
Rajaa.BARHTAOUI
561a9f140d feat(xo-web/host/logs): use SortedTable actions (#3313)
See #3179
2018-08-14 16:28:19 +02:00
badrAZ
ba56114e9f fix(xo-web/backup-ng/new): schedule's name overridden with undefined if it's not been edited (#3288)
Fixes #3286
2018-08-14 12:18:41 +02:00
Pierre Donias
11bd75d2fe feat(xo-web/tasks): remove empty message and let SortedTable handle it (#3305) 2018-08-13 17:21:18 +02:00
Julien Fontanet
ececbaf201 fix(xo-server/remotes): properly ignore async errors 2018-08-13 16:55:56 +02:00
Julien Fontanet
1985134d94 chore(xo-server/remotes): use Array#forEach() 2018-08-13 16:55:56 +02:00
Julien Fontanet
2cc59078b1 chore(xo-server/remotes): inline syncAllRemotes() and forgetAllRemotes() 2018-08-13 16:55:56 +02:00
Julien Fontanet
3d4d7db5da feat(xo-server/logs): double number of entries 2018-08-13 16:55:56 +02:00
Pierre Donias
dc40ceaafe feat(xo-web/SortedTable): always show filter input (#3296)
Fixes #3295
2018-08-13 16:44:31 +02:00
Rajaa.BARHTAOUI
0110e223ee feat(xo-web/Collapse): size prop (#3299) 2018-08-13 14:58:39 +02:00
Julien Fontanet
e7467dca8a feat(xo-server/backupNg): support restoring directories (#3300)
See #1924
2018-08-13 13:32:25 +02:00
Julien Fontanet
4a1e87b534 feat(xen-api/cli): add diff() helper 2018-08-13 11:53:56 +02:00
Olivier Lambert
5a32f904bc add no matching VMs error into troubleshooting for backup (#3297)
* add no matching VMs error into troubleshooting for backup
2018-08-12 10:43:13 +02:00
Julien Fontanet
14d023a9f5 feat(xo-server): 5.24.2 2018-08-10 16:50:43 +02:00
Julien Fontanet
2e5e81e93e feat(xen-api): 0.17.1 2018-08-10 16:50:11 +02:00
Julien Fontanet
c9cc106be6 feat(xo-server): 5.24.1 2018-08-10 12:57:31 +02:00
Julien Fontanet
29fc17f260 fix(xen-api/putResource): ensure taskRef is not sent on probing
This fix an issue introduced in ba6b9682

Fixes #3293.
2018-08-10 12:41:35 +02:00
Julien Fontanet
c7d16fd345 chore(vhd-lib): remove deprecated assert.equal 2018-08-10 11:37:47 +02:00
Julien Fontanet
ffe29b8957 feat(xo-server-cloud): 0.2.4 2018-08-10 11:23:38 +02:00
Julien Fontanet
be1bd9254d chore: update dependencies 2018-08-10 11:21:59 +02:00
Pierre Donias
6156649faa feat(xo-server-cloud): 0.2.3 2018-08-09 17:41:53 +02:00
Pierre Donias
2edddaa835 feat(xo-web): 5.24.0 2018-08-09 17:07:04 +02:00
Pierre Donias
d00fff3d4c feat(xo-server): 5.24.0 2018-08-09 17:05:10 +02:00
Pierre Donias
c0b84ae848 feat(@xen-orchestra/fs): 0.2.1 2018-08-09 16:59:43 +02:00
Pierre Donias
f68d1539aa feat(xen-api): 0.17.0 2018-08-09 16:55:25 +02:00
Pierre Donias
455e48596c chore(CHANGELOG): 5.24.0 2018-08-09 16:50:54 +02:00
badrAZ
ba6b968256 fix(xen-api/putResource): dont loose task ref on redirect (#3243)
Fixes #3245
2018-08-09 16:44:52 +02:00
Pierre Donias
8fbf2786fd feat(xo-server/patching): check date consistency before patching (#3292)
Fixes #3056
2018-08-09 16:10:13 +02:00
badrAZ
06d38808be feat(xo-server/jobs): send report for interrupted jobs on server start (#3164)
Fixes #2998
2018-08-09 15:45:28 +02:00
Olivier Lambert
49565a672b doc improvements and text fixes (#3289) 2018-08-08 17:05:15 +02:00
marcpezin
2d980f3d50 Supported version list (#3279)
* XCP/XS Supported version list
2018-08-08 14:58:56 +02:00
badrAZ
e29ba3e0cf feat(xo-web/backup-ng/new): remove previous backups first (#3260)
Fixes #3212
2018-08-08 14:32:28 +02:00
badrAZ
dff342d2bd feat(xo-web/backup-ng): rename "Export ret." to "Backup ret." and "Copy ret." to "Replication ret." (#3283)
See #2711
2018-08-08 14:11:22 +02:00
badrAZ
d38ad3a17f feat(xo-web/backup-ng/new): move compression in the advanced settings (#3281)
See #2711
2018-08-08 11:45:34 +02:00
Pierre Donias
ce21da4146 fix(xo-web/VM): missing data prop on Copiable (#3282) 2018-08-08 11:42:45 +02:00
badrAZ
09a381806b fix(xo-web/backup-ng/new): the compression default value should be false (#3280)
See #2711
2018-08-08 11:03:29 +02:00
badrAZ
0ca7b8539f chore(xo-web/backup-ng/new): better "settings" management (#3259) 2018-08-08 10:36:33 +02:00
Julien Fontanet
cc90d41be4 fix(fs/SMB): rename should replace existing files (#3278)
Fixes #3224
2018-08-08 10:32:08 +02:00
badrAZ
a7dd83772e feat(xo-web/backup-ng/overview): list the backup job's modes (#3277)
Fixes #3169
2018-08-07 17:22:12 +02:00
Rajaa.BARHTAOUI
eea52b5166 feat(xo-web/health/alarms): use SortedTable actions (#3271)
See #3179
2018-08-07 17:20:59 +02:00
Rajaa.BARHTAOUI
4c20e89a8b feat(xo-web/health/orphanedSnapshotVdis): use SortedTable actions (#3270)
See #3179
2018-08-07 16:53:57 +02:00
badrAZ
0d88a9f8f4 fix(xo-web/backup-ng/new): job's global settings can be undefined (#3275)
Introduced by the PR #3237
2018-08-07 16:15:02 +02:00
Rajaa.BARHTAOUI
7ad4fc0e6c feat(xo-web/health/orphanedVms): use SortedTable actions (#3274)
See #3179
2018-08-07 15:08:53 +02:00
badrAZ
c7c205d52f feat(xo-web/vm): move the copy clipboard of the VM's UUID to the header (#3248)
Fixes #3221
2018-08-07 14:17:47 +02:00
badrAZ
cdc43a6cde feat(xo-web/backup-ng/new): make the smart mode's toggle more visible (#3263)
See #2711
2018-08-06 11:50:01 +02:00
badrAZ
a58a9a9e6a feat(xo-web/ActionButton): ability to set the icon's color (#3258)
See PR: #3255
2018-08-06 11:11:58 +02:00
badrAZ
9d2f15cf33 chore(xo-web/backup-ng/new): better globalSettings management (#3237) 2018-08-06 11:06:32 +02:00
badrAZ
2d596af9a5 fix(xo-webpool/tab-advanced): GPU groups not filtered by pool (#3253)
Fixes #3176
2018-08-06 10:57:16 +02:00
badrAZ
f70a25e82f feat(xo-web/settings/remotes): make SMB subfolder field optional (#3250)
Fixes #3249
2018-08-06 10:35:39 +02:00
Pierre Donias
33859303bd Revert "fix(xen-api/getResource): softer backpressure to prevent XS75 error (#3234)"
This reverts commit b9f3313903.
2018-08-06 09:59:50 +02:00
bchool
1ed0c01add Extra packages XO needs for FLR on Debian (#3240)
This resolves #3239
2018-07-28 17:56:55 +02:00
Pierre Donias
dfcd41992a feat(xo-web): 5.23.0 2018-07-26 16:20:37 +02:00
Pierre Donias
26cb388c64 feat(xo-server): 5.23.0 2018-07-26 16:19:25 +02:00
Pierre Donias
b2be6e5d5b feat(xo-server-backup-reports): 0.12.3 2018-07-26 16:16:10 +02:00
Pierre Donias
2fec62968e feat(complex-matcher): 0.4.0 2018-07-26 16:11:39 +02:00
Pierre Donias
b15a6963e4 chore(@xen-orchestra/fs): use xo-remote-parser@0.5.0 2018-07-26 16:06:00 +02:00
Pierre Donias
f7b4f78c8d feat(xo-remote-parser): 0.5.0 2018-07-26 16:01:16 +02:00
Pierre Donias
9bebfe71ac feat(xen-api): 0.16.12 2018-07-26 14:10:59 +02:00
Pierre Donias
a7b3e8e59c chore(CHANGELOG): 5.23.0 2018-07-26 13:59:07 +02:00
Pierre Donias
b9f3313903 fix(xen-api/getResource): softer backpressure to prevent XS75 error (#3234)
Fixes #3205

https://bugs.xenserver.org/browse/XSO-873
2018-07-26 13:53:00 +02:00
Pierre Donias
9c4bd0d0dd feat(xo-web/backup NG): remove delete button on logs (#3235)
Fixes #3153
2018-07-26 11:49:59 +02:00
badrAZ
ac2e490569 feat(xo-web/settings/remotes): ability to edit/delete a remote with an invalid URL (#3226)
Fixes #3182
2018-07-26 11:29:33 +02:00
Jon Sands
114cf7ac7d (Documentation) Add password recovery step for web UI (#3233)
* fix XOSAN links

* Fix default SR command + cleanup

* add more coalesce debug info

* remove extra space

* add password recovery step
2018-07-25 23:45:08 +02:00
badrAZ
255e0c61d5 feat(xo-web): implementation of the pool item component (#3229)
See #2605
2018-07-25 14:57:43 +02:00
badrAZ
288868fe91 feat(xo-web/backup-ng/new): ability to set a job's timeout (#3222)
Fixes #2978
2018-07-25 14:43:35 +02:00
badrAZ
aba7b730f5 fix(xo-web/backup-ng/new): ability to edit a schedule's state (#3228)
Fixes #3223
2018-07-25 14:36:44 +02:00
badrAZ
b95fc86667 feat(xo-web/setting/remotes): ability to change the type of a remote (#3207) 2018-07-25 14:24:25 +02:00
badrAZ
0ed1df3af6 feat(xo-web/backup-ng/new): ability to edit a schedule's name (#3143)
See #2711
Fixes #3071
2018-07-25 14:08:02 +02:00
Jon Sands
eff38b9aee (Documentation) add more coalesce debug info (#3230)
* fix XOSAN links

* Fix default SR command + cleanup

* add more coalesce debug info

* remove extra space
2018-07-24 23:45:49 +02:00
Pierre Donias
53477be12d feat(xo-web/VM,SR): import VDI content (#3216)
See #2432
2018-07-23 09:24:44 +02:00
Julien Fontanet
d99555a4a8 feat(xo-server/backupNg): remove incomplete XVAs (#3215)
Fixes #3159
2018-07-20 15:29:38 +02:00
Julien Fontanet
f00be23e02 chore(package): update eslint-config-standard to 12.0.0-alpha.0 2018-07-20 14:57:13 +02:00
Julien Fontanet
ee6025f3ad fix(xo-server/backupNg/migration): migrate reportWhen (#3206)
Fixes #3180
2018-07-20 14:03:07 +02:00
Julien Fontanet
990c0e570d feat(xo-server/backup NG): disable vmTimeout 2018-07-20 13:58:45 +02:00
Julien Fontanet
b07b4e3744 Revert "fix(xo-server/jobs): serialize all fields"
This reverts commit d51527b2d8.

Causing too much issues, a new approach is developed in #3209.
2018-07-19 18:39:36 +02:00
Julien Fontanet
6d25e11f72 feat(xo-server/disk.exportContent): print stream errors 2018-07-19 17:35:55 +02:00
Julien Fontanet
16c250e122 chore(xo-server/backupNg/migration): use copyRetention for replication (#3204) 2018-07-19 14:48:17 +02:00
Julien Fontanet
e6a10e1ac2 feat(complex-matcher): update docs and changelog 2018-07-19 12:03:00 +02:00
Julien Fontanet
829beb84e2 feat(complex-matcher): regexp support (#3199) 2018-07-19 12:01:57 +02:00
badrAZ
c3066921ab chore(xo-web/settings/remotes): avoid creating functions in the render (#3203) 2018-07-19 11:28:00 +02:00
badrAZ
ca424f166b chore(xo-web/settings/remotes): pass formatMessage to SortedTable (#3202)
Instead of creating new components.
2018-07-19 10:25:41 +02:00
Julien Fontanet
4192abf3c2 fix(tests): workaround a Babel bug for Node 6 2018-07-19 10:21:39 +02:00
Julien Fontanet
d51527b2d8 fix(xo-server/jobs): serialize all fields
Otherwise some strings containing valid JSON syntax are incorrectly
transformed.
2018-07-19 10:15:45 +02:00
badrAZ
a1c829e393 chore(xo-web/settings/remotes): use groupBy (#3200) 2018-07-19 09:46:23 +02:00
Julien Fontanet
7dfb1635c2 feat(complex-matcher): add glob pattern support (#3198)
Fixes #3190
2018-07-18 15:06:33 +02:00
Julien Fontanet
e58d56a656 chore(complex-matcher/StringNode): bind lcValue to match 2018-07-18 12:37:33 +02:00
Pierre Donias
93037ee44f fix(xo-server/api): disk.importContent description, params & resolve (#3197) 2018-07-18 11:29:20 +02:00
Julien Fontanet
ecd8265098 chore(xo-web): downgrade modular-cssify to 12
Work around an issue with 14 which breaks in watch mode
2018-07-17 18:19:03 +02:00
Pierre Donias
4c73cfa423 feat(xo-web/VM,SR): export VDI content (#3194)
See #2432
2018-07-17 13:38:23 +02:00
Julien Fontanet
19b3c207c7 feat(xo-server/api): disk.importContent (#3193)
See #2432
2018-07-17 12:04:35 +02:00
Julien Fontanet
58d4408909 fix(xo-server/api/disk): coding style 2018-07-17 11:22:00 +02:00
Julien Fontanet
4925e678ed chore: update dependencies 2018-07-17 11:21:45 +02:00
Julien Fontanet
7d14705dcf feat(xo-server/api): disk.exportContent (#3192)
See #2432
2018-07-17 11:08:25 +02:00
Julien Fontanet
5d0040acd1 chore(xo-server/api/vm): remove unnecessary exports 2018-07-17 10:35:38 +02:00
Julien Fontanet
8aa6c6551b feat(vhd-cli/info): support incomplete file 2018-07-17 10:35:38 +02:00
badrAZ
c9f08a2f8f fix(xo-server-backup-reports): dont bail on successful VM with reportWhen failure (#3185)
Fixes #3181
2018-07-16 11:30:25 +02:00
Pierre Donias
70b17a6fa9 feat(xo-web): 5.22.1 2018-07-13 13:55:10 +02:00
Pierre Donias
c1a118f2a1 chore(CHANGELOG): 5.22.1 2018-07-13 13:52:47 +02:00
badrAZ
fa3eb1cdf5 fix(xo-web/select-objects#SelectRemote): gracefully ignore remotes with invalid URL (#3178) 2018-07-13 11:09:52 +02:00
Jon Sands
16a6902bd2 (Docu) Fix default SR command + cleanup (#3177)
* fix XOSAN links

* Fix default SR command + cleanup
2018-07-13 09:52:01 +02:00
Pierre Donias
296e30a40f feat(xo-web): 5.22.0 2018-07-12 15:25:44 +02:00
Pierre Donias
03f6e33fd2 feat(xo-server): 5.22.0 2018-07-12 15:24:28 +02:00
Pierre Donias
dde4410a1b feat(vhd-cli): 0.1.0 2018-07-12 15:22:07 +02:00
Pierre Donias
191af334e7 feat(vhd-lib): 0.3.0 2018-07-12 15:20:18 +02:00
Pierre Donias
69d5abc840 feat(fs): 0.2.0 2018-07-12 15:17:19 +02:00
Pierre Donias
0e4b0ce768 chore: use xo-remote-parser 0.4 2018-07-12 15:14:20 +02:00
Pierre Donias
d065887ffd feat(xo-remote-parser): 0.4.0 2018-07-12 15:03:27 +02:00
Pierre Donias
de33f33c0f chore(CHANGELOG): 5.22.0 2018-07-12 14:58:56 +02:00
Julien Fontanet
aa45032364 feat(fs/smb): implement open/read/close (#3175)
Fixes #3149
2018-07-12 14:55:11 +02:00
badrAZ
4f6c515cef feat(xo-web): add Turkish translation (#3174)
Thanks @rizaemet!
2018-07-12 14:54:36 +02:00
Rajaa.BARHTAOUI
3ed081f04c feat(xo-web/VM/Snapshots): add fast clone option when creating a VM (#3136)
Fixes #3120
2018-07-12 14:45:59 +02:00
badrAZ
3370014ddf feat(xo-web/backup-ng/logs): link XO objects (#3171)
See #2711 #2605
2018-07-12 13:22:38 +02:00
Julien Fontanet
3241c426a2 feat(xo-server): add AMAP data on VDI export/import errors (#3172)
Fixes #3157
2018-07-12 11:07:28 +02:00
badrAZ
961babe6a3 feat(xo-server-backup-reports): handle interrupted backups (#3154)
See #2998
2018-07-12 10:49:00 +02:00
Julien Fontanet
b654cba4b4 chore(xo-server/backups-ng): update TODO list 2018-07-12 10:40:22 +02:00
Julien Fontanet
4bf4de1979 chore(fs/local#_createReadStream): coding style 2018-07-12 10:39:50 +02:00
Julien Fontanet
c2c62b20f0 chore(fs/smb#_getClient): remove unnecessary param 2018-07-11 10:23:49 +02:00
badrAZ
f6e48adc28 fix(xo-web/settings/remotes): gracefully ignore remotes with invalid URL (#3167)
See #3158
2018-07-10 15:57:57 +02:00
Pierre Donias
80c1c81514 fix(xo-server/Xapi): createTemporaryVdiOnSr bad SR param (#3166) 2018-07-10 15:05:51 +02:00
badrAZ
16f8029e69 fix(xo-web/new-vm): only create cloud config drive when enabled (#3162)
This bug has been introduced by the PR: #3054

Fixes #3161
2018-07-09 11:07:43 +02:00
badrAZ
072dea71f0 fix(settings/remotes): port default value is undefined (#3160)
Fixes #3158
2018-07-09 09:51:29 +02:00
Jon Sands
ff1892057d fix XOSAN links (#3156) 2018-07-06 22:25:56 +02:00
badrAZ
cdc2ac2d9b feat(xo-web/VM/Snapshots): notify the result of reverting a VM (#3150)
Fixes #3095
2018-07-06 11:20:27 +02:00
badrAZ
de76387c8f fix(xo-server/cloud-config): templates be available to all users (#3148)
Fixes #3147
2018-07-05 17:15:06 +02:00
badrAZ
939b416d2e fix(xo-web): missing file from #3131 (#3146) 2018-07-05 17:14:16 +02:00
badrAZ
f1b1c4ae13 feat(xo-web/backup-ng/overview): display non-default advanced settings (#3145)
Fixes #3087
2018-07-05 14:40:07 +02:00
badrAZ
d38a4ccf08 feat(xo-web/backup-ng/new): add offline snapshot info (#3144) 2018-07-05 11:35:14 +02:00
badrAZ
fb1bf6a1e7 feat(NFS remote): allow optional port (#3131)
Fixes #2299
2018-07-05 11:09:34 +02:00
Julien Fontanet
46100729b0 feat(xo-web/settings/remotes): warning when creating a local remote (#3142)
Fixes #3105
2018-07-05 10:24:12 +02:00
Pierre Donias
4916643fdc PR 2018-07-04 15:46:21 +02:00
Pierre Donias
124d743052 feat(xo-web/settings/remotes): warning when creating a local remote
Fixes #3105
2018-07-04 15:41:25 +02:00
Pierre Donias
dfdc2a62ab fix(xo-web/settings/remotes): correctly reset form (#3141)
Fixes #3140
2018-07-04 15:29:16 +02:00
badrAZ
76f3bc0758 feat(xo-web/backup-ng/logs): make copy to clipboard and report buttons always available (#3133)
Fixes #3130
2018-07-03 16:16:12 +02:00
Julien Fontanet
e16971c31a feat(xo-server/backup NG): job level timeout (#3129)
See #2978
2018-07-02 16:21:07 +02:00
badrAZ
c4b9e36346 feat(xo-web/backup-ng/new): add a link to the remotes' settings (#3128)
See #2711
See #2299
Fixes #3106
2018-07-02 14:47:11 +02:00
Julien Fontanet
c95fe164cf feat(vhd-cli): new command merge
See #2792
2018-07-02 14:07:37 +02:00
Julien Fontanet
f1964f3380 feat(vhd-lib/mergeVhd): report progress
Fixes #3099
2018-07-02 14:07:37 +02:00
Julien Fontanet
84701cb7e2 fix(xo-server/job.delete): delete related schedules (#3124)
Fixes #3108
2018-06-29 16:20:13 +02:00
Julien Fontanet
f8a2f2d3cd Merge branch 'xo/master' 2018-06-29 15:26:25 +02:00
Julien Fontanet
4b092a5a7f chore(docs): prepare for merge 2018-06-29 15:24:53 +02:00
Julien Fontanet
33e8cb81bb chore(PR template): add packages to CHANGELOG 2018-06-28 17:27:53 +02:00
Julien Fontanet
e2b29be6a8 feat(xo-web): 5.21.0 2018-06-28 14:19:17 +02:00
Julien Fontanet
6f9dad8999 feat(xo-server): 5.21.0 2018-06-28 14:18:47 +02:00
Julien Fontanet
089cffcca1 feat(xo-server-load-balancer): 0.3.2 2018-06-28 14:14:48 +02:00
Julien Fontanet
88df5a8337 feat(xen-api): 0.16.11 2018-06-28 14:13:35 +02:00
Julien Fontanet
794c1cf89b feat(vhd-lib): 0.2.0 2018-06-28 14:10:08 +02:00
Julien Fontanet
9a5eea6e78 chore(CHANGELOG): 5.21.0 2018-06-28 13:58:44 +02:00
badrAZ
40568cd61f feat(xo-web/backup-ng/logs): copy full log and report a failed job (#3110)
Fixes #3100
2018-06-28 10:57:35 +02:00
Pierre Donias
358e1441cc fix(xo-server/pool.mergeInto): fail when product brands are different (#3118)
Fixes #3061
2018-06-28 10:10:55 +02:00
badrAZ
be930e127e fix(xo-web/vm/snapshots): creation from snapshot (#3117) 2018-06-28 10:03:19 +02:00
badrAZ
3656e83df5 feat(backup-ng/logs): add the job's name to the modal's title (#3115)
See #2711
2018-06-27 17:43:06 +02:00
badrAZ
abbb0450f8 feat(xo-web/backup-ng/logs): remove Mode column (#3116)
See #2711
2018-06-27 17:41:03 +02:00
Pierre Donias
8e4beeb00f feat(xo-web/backup-ng/health): legacy snapshots table (#3111)
Fixes #3082
2018-06-27 17:25:52 +02:00
Julien Fontanet
05d10ef985 feat(xo-web/settings/remotes): type defaults to NFS (#3114)
Fixes #3103
2018-06-27 17:04:55 +02:00
Pierre Donias
989d27154d fix(xo-web/backup/health): missing schedule subscription (#3104)
Also, move the table from `Backup/Health` to `Backup NG/Health`.
2018-06-26 16:12:29 +02:00
Pierre Donias
ec9957bd86 feat(xo-server,xo-web/tasks): disable cancel/destroy when not relevant (#3109)
* feat(xo-server,xo-web/tasks): disable cancel/destroy when not relevant

Fixes #3076

* cancellable/destroyable → allowedOperations

* Update index.js

* Update index.js
2018-06-26 15:40:53 +02:00
Julien Fontanet
dc8a7c46e0 feat(xo-server): dont create default remote (#3107)
Related to #3105
2018-06-26 14:47:24 +02:00
Pierre Donias
9ee2d8e0c2 feat(xo-web): new backup/health view (#3102)
Fixes #3090

Move "VM snapshots related to non-existent backups" table
from dashboard/health to backup/health

### Check list

> Check items when done or if not relevant

- [x] PR reference the relevant issue (e.g. `Fixes #007`)
- [x] if UI changes, a screenshot has been added to the PR
- [x] CHANGELOG updated
- [x] documentation updated

### Process

1. create a PR as soon as possible
1. mark it as `WiP:` (Work in Progress) if not ready to be merged
1. when you want a review, add a reviewer
1. if necessary, update your PR, and readd a reviewer

### List of packages to release

> No need to mention xo-server and xo-web.

### Screenshots

![capture_2018-06-25_12 18 01](https://user-images.githubusercontent.com/10992860/41858496-56af27d0-789a-11e8-9f86-e3ce1ac28e54.png)
2018-06-25 17:59:36 +02:00
badrAZ
6c62d6840a fix(backup-ng/new): "new-schedules" dont exist anymore (#3098) 2018-06-25 14:02:10 +02:00
badrAZ
2a2135ac71 fix(xo-server-load-balancer): make the metric "memoryFree" optional (#3073) 2018-06-22 19:00:27 +02:00
badrAZ
efaad2efb2 feat(backup-ng/new): ability to enable/disable a schedule (#3094)
Fixes #3062
2018-06-22 17:25:31 +02:00
badrAZ
3b244c24d7 feat(backup-ng/new): group saved & new schedules (#3093)
See #2711
2018-06-22 16:23:12 +02:00
badrAZ
915052d5f6 feat(backup NG): ability to cancel a running job (#3053)
Fixes #3047
2018-06-22 09:10:10 +02:00
Pierre Donias
05c6c7830d feat(xo-web/backups): add blog link to deprecation message (#3092)
Fixes #3089
2018-06-21 16:48:28 +02:00
badrAZ
0217c51559 fix(backup-ng/new): only list writable SRs for CR/DR (#3085)
Fixes #3050
2018-06-21 15:41:16 +02:00
badrAZ
0c514198bb feat: ability to save cloud configs (#3054)
Fixes #2984
2018-06-21 15:02:52 +02:00
Pierre Donias
0e68834b4c chore(xo-web): multiple minor fixes (#3091) 2018-06-21 12:10:38 +02:00
Julien Fontanet
ee99ef6264 feat(vhd-lib): createContentStream (#3086)
Export the raw content of the VHD as a stream.

This features is exposed in CLI: `vhd-cli raw input.vhd output.raw`

Related to #3083

Perf comparison between qemu-img and our vhd-cli to convert a 10GiB VHD file to raw:

```
> time qemu-img convert -f vpc -O raw origin.vhd expected.raw
1.40user 15.19system 1:01.88elapsed 26%CPU (0avgtext+0avgdata 24264maxresident)k
20979008inputs+20971520outputs (12major+4648minor)pagefaults 0swaps
> time vhd-cli raw origin.vhd actual.raw
21.97user 16.03system 1:09.11elapsed 54%CPU (0avgtext+0avgdata 65208maxresident)k
20956008inputs+20972448outputs (1major+754101minor)pagefaults 0swaps

> md5sum *.raw
b55ec6924be750edd2423e4a7aa262c3  actual.raw
b55ec6924be750edd2423e4a7aa262c3  expected.raw
```
2018-06-20 17:53:20 +02:00
badrAZ
bebb9bf0df fix(XapiStats/iowait): don't scale XAPI values (#3079)
Fixes #2969
2018-06-19 16:16:07 +02:00
badrAZ
4830ac9623 fix(xo-server/xapi-stats): specify the wanted step when requesting the RRD (#3078)
Fixes #3026
Fixes #3075
2018-06-18 18:32:16 +02:00
badrAZ
58b1d0fba8 fix(xo-server-load-balancer): issue whith a mutation of a var (#3077) 2018-06-18 16:01:26 +02:00
Julien Fontanet
cc4e69e631 feat(xo-server): 5.20.3 2018-06-16 17:05:54 +02:00
Julien Fontanet
e14fda6e8a feat(xen-api): 0.1.3 2018-06-16 17:05:27 +02:00
Julien Fontanet
ec48b77af3 feat(xen-api): add task record to task errors 2018-06-16 15:24:26 +02:00
Julien Fontanet
c7d6a19864 fix(xo-server/full backup NG): do not fork if 1 target 2018-06-16 15:24:26 +02:00
Julien Fontanet
7d714c8ce4 feat(xo-server): 5.20.2 2018-06-16 13:51:51 +02:00
Julien Fontanet
f70989c3a2 feat(delta NG): fix UUID of existing VHDs 2018-06-16 13:51:03 +02:00
Julien Fontanet
70490988b0 chore(xo-server/backupNg): add parseUuid util function 2018-06-16 13:51:03 +02:00
Julien Fontanet
d0795fdded feat(vhd-lib): make footer.{uuid,parentUuid)} a buffer 2018-06-16 13:51:03 +02:00
Julien Fontanet
1c736e9910 feat(xo-web): 5.20.2 2018-06-15 15:35:26 +02:00
Julien Fontanet
62979d5c22 feat(xo-server): 5.20.1 2018-06-15 15:35:00 +02:00
Julien Fontanet
ec8a4da73c feat(xo-vmdk-to-vhd): 0.1.3 2018-06-15 15:34:33 +02:00
Julien Fontanet
dea1bfee01 feat(xo-server-backup-reports): 0.12.2 2018-06-15 15:32:02 +02:00
Julien Fontanet
c18b82504a feat(xen-api): 0.16.10 2018-06-15 15:30:59 +02:00
Jon Sands
d7fa68248c grammar updates v17 (#141)
* remove special chars

* grammar updates v17

* fix duplicate deploy instructions, commands

fix vm start command using old VM name, clean up duplicate deploy
instructions. Also add "first login" info with default credentials
2018-06-09 09:54:50 +02:00
Jon Sands
92a67bf5fb remove special chars (#140) 2018-05-31 20:26:07 +02:00
Jon Sands
b20a46da76 first pass of new concurrency section (#139) 2018-05-31 20:07:42 +02:00
Jon Sands
26bba23890 grammar updates v16 (#138)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username

* Documentation typo/grammar cleanup part 9

* grammar cleanup v10

* grammar editing v10

* grammar updates v11

* Grammar updates v11

* Lucky #13 (grammar updates)

* grammar updates v14

* grammar updates v15

* grammar updates v16
2018-05-28 23:31:08 +02:00
Jon Sands
0c0fed2484 grammar updates v15 (#137)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username

* Documentation typo/grammar cleanup part 9

* grammar cleanup v10

* grammar editing v10

* grammar updates v11

* Grammar updates v11

* Lucky #13 (grammar updates)

* grammar updates v14

* grammar updates v15
2018-05-25 09:59:31 +02:00
Jon Sands
8b06049bf8 grammar updates v14 (#136)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username

* Documentation typo/grammar cleanup part 9

* grammar cleanup v10

* grammar editing v10

* grammar updates v11

* Grammar updates v11

* Lucky #13 (grammar updates)

* grammar updates v14
2018-05-22 23:02:22 +02:00
Jon Sands
0045a1e608 Lucky #13 (grammar updates) (#135)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username

* Documentation typo/grammar cleanup part 9

* grammar cleanup v10

* grammar editing v10

* grammar updates v11

* Grammar updates v11

* Lucky #13 (grammar updates)
2018-05-22 00:00:19 +02:00
Jon Sands
95252be5f0 grammar updates v12 (#134)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username

* Documentation typo/grammar cleanup part 9

* grammar cleanup v10

* grammar editing v10

* grammar updates v11

* Grammar updates v11
2018-05-19 11:17:52 +02:00
Jon Sands
2e74f87ae0 grammar updates v11 (#133)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username

* Documentation typo/grammar cleanup part 9

* grammar cleanup v10

* grammar editing v10

* grammar updates v11
2018-05-17 22:38:00 +02:00
Jon Sands
65cd32125b type/grammar fixes part 10 (#132)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username

* Documentation typo/grammar cleanup part 9

* grammar cleanup v10

* grammar editing v10
2018-05-17 20:15:02 +02:00
Jon Sands
5f14d84ad2 type/grammar fixes part 9 (#131)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username

* Documentation typo/grammar cleanup part 9

* grammar cleanup v10
2018-05-15 23:31:28 +02:00
Jon Sands
67d13bf634 type/grammar fixes part 9 (#130)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username

* Documentation typo/grammar cleanup part 9
2018-05-14 22:40:39 +02:00
Jon Sands
37c4a9d6ef add note to change username (#129)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail

* add note on editing username
2018-05-11 20:41:43 +02:00
Jon Sands
f652bda0a4 add ENOSPC info (#128)
* Clarification, update links, organize

* add nfs warning, fix debian version

* add ENOSPC troubleshooting

* add more enospc detail
2018-05-11 20:18:11 +02:00
Jon Sands
272565243d Clarification, update links, organize (#127)
* Clarification, update links, organize

* add nfs warning, fix debian version
2018-05-11 19:38:51 +02:00
Jon Sands
4670c393a9 more grammar/typo fixes (#126)
* Grammar and typo fixes

* More grammar/typo fixes
2018-05-10 06:31:11 +02:00
Jon Sands
6552f7b865 Grammar and typo fixes (#125) 2018-05-08 22:14:15 +02:00
Julien Fontanet
873db3bf26 0.2.1 2018-04-13 11:32:47 +02:00
Julien Fontanet
c795887a35 fix: display unmanaged snapshots as unmanaged 2018-04-13 11:32:33 +02:00
Julien Fontanet
23824bafe8 1.1.0 2018-04-09 16:07:31 +02:00
Julien Fontanet
5cca58f2b3 feat(README): add documentation 2018-04-09 16:03:25 +02:00
Julien Fontanet
d05c9b6133 chore: use console.error to display errors 2018-04-09 16:03:04 +02:00
Julien Fontanet
39a84a1ac0 feat: support allowUnauthorized, autoConnect and label 2018-04-09 16:02:46 +02:00
Julien Fontanet
b1c851c9d6 chore(package): prepublishOnly script 2018-04-09 16:02:17 +02:00
Julien Fontanet
6280a9365c chore(package): update dependencies 2018-04-09 16:02:04 +02:00
marcpezin
42a3ee90e4 update the reseller application process (#124)
* Add more information about the "restriction" to join the program
* Clarify some point
2018-04-09 15:21:23 +02:00
Julien Fontanet
2741dacd64 0.2.0 2018-04-09 14:01:47 +02:00
Julien Fontanet
4c2c2390bd chore(package): prepublish → prepublishOnly 2018-04-09 14:01:18 +02:00
Julien Fontanet
635b8ce5f0 chore(package): update dependencies 2018-04-09 14:00:17 +02:00
Julien Fontanet
efc13cc456 fix: display VDI with missing parent
Consider them parentless even though they are simply unknown.
2018-04-09 11:34:56 +02:00
Olivier Lambert
e4bd59b2ea remove xo-web section reference 2018-04-03 20:26:43 +02:00
Olivier Lambert
9310e3c258 fix something that doesn't make sense since monorepo 2018-04-03 20:23:55 +02:00
ETL
96f4896c84 Text improvements (#123)
* fixed some typos and made some small improvement to make the text more readable.
2018-03-20 21:46:32 +01:00
marcpezin
f5d6407ec9 XOSAN creation - documentation (#122)
* Creating the new XOSAN

* content

* screenshot xosan panel

* Add files via upload

* xosan sr select

* xosan-mode.png

* xosan-advanced.png

* xosan-creation-process.png

* All the creation process for XOSAN

* typo correction
2018-03-20 15:01:49 +01:00
Olivier Lambert
dc6d688c96 feat(filter): add number comparison 2018-02-28 16:43:48 +01:00
Olivier Lambert
65ebbf179f add local CA doc 2018-02-21 09:52:31 +01:00
Julien Fontanet
2246e818b9 xo-web is now in the xen-orchestra monorepo (#121) 2018-02-07 10:46:20 +01:00
Julien Fontanet
f32f0ee215 no more stable branch due to monorepo 2018-02-01 16:07:12 +01:00
Pierre Donias
533e85d058 Fix xo-server migration (#120) 2018-02-01 15:10:55 +01:00
Julien Fontanet
4f2c750dbb xo-server is now in the xen-orchestra monorepo (#117) 2018-02-01 14:09:06 +01:00
marcpezin
aa64385bc6 LICENCE_RESTRICTION(PCI_device_for_auto_update) (#119)
Adding troubleshooting for LICENCE_RESTRICTION(PCI_device_for_auto_update)
2018-01-26 14:58:36 +01:00
Olivier Lambert
e80d0689ad change VDI chain message 2018-01-26 14:45:13 +01:00
Olivier Lambert
e7a077b820 add doc on which mode to use (#116) 2017-12-29 12:54:36 +01:00
Olivier Lambert
0c58a8569e image optimization (#115) 2017-12-29 12:49:34 +01:00
marcpezin
ca7d577d54 Xosan Trial doc (#110)
* Xosan Trial doc
2017-12-29 11:41:05 +01:00
Jon Sands
0c6315458f Grammar fixes, link updates, etc (#114)
fixing osme grammar and links, and adding info about using
forever-service to have XO start on boot
2017-12-15 13:35:00 +01:00
Julien Fontanet
61f9aa6293 fix(from_the_sources): add missing yarn builds 2017-11-23 14:13:34 +01:00
Julien Fontanet
7d950e2b8d feat(from_the_sources): yarn build is now necessary (#113) 2017-11-23 12:21:03 +01:00
Julien Fontanet
2d18ff6561 chore(from_the_sources): update Node LTS version 2017-11-23 12:05:48 +01:00
Julien Fontanet
4c2307ee49 fix(reverse-proxy): add missing path 2017-11-17 11:55:35 +01:00
Julien Fontanet
6e2e04bf7f fix(reverse-proxy): Apache2 config (#112)
Should fix export/import issues.
2017-11-17 11:51:26 +01:00
marcpezin
94d84c2516 Deleting "forecast" and "autoscalability" (#111)
As these features are not yet developed.
2017-11-08 16:09:23 +01:00
Olivier Lambert
2fcb000466 add more troubleshooting feedback 2017-10-29 09:37:06 +01:00
Julien Fontanet
3be965ed7f feat(troubleshooting): ghost tasks (#108) 2017-10-21 09:44:30 +02:00
marcpezin
77d067613d Massive documentation update (#109)
* Major refresh on some features, new screenshots
2017-10-21 09:43:50 +02:00
marcpezin
5e3702856f chore(self service): new screenshots (#107) 2017-10-13 16:25:43 +02:00
marcpezin
1bb6c8232b Note about self service resources and snapshot (#105)
Adding a note explaining that creating a snapshot within a self service VM will use the resources in the set.
2017-10-09 14:31:32 +02:00
marcpezin
bb6f133db9 Self Service update - screenshot (#103)
* new screenshot for self service
2017-09-28 16:15:11 +02:00
marcpezin
72c3287b48 Credit Card update infos section (#104)
adding infos on how to edit your CC infos
2017-09-27 17:16:30 +02:00
marcpezin
aa12e78421 Reseller update (#102)
* reseller update
2017-09-26 15:29:11 +02:00
marcpezin
319caf5275 backup restore (#101)
Adding a small note regarding backup restoration on fresh XenServer.
2017-09-15 14:34:13 +02:00
Olivier Lambert
d074a9e744 feat(troubleshooting): case of PV only Xenserver 2017-09-14 11:47:31 +02:00
Olivier Lambert
8f6eb12b3d feat(xosan): updated XOSAN pics 2017-09-12 14:59:45 +02:00
Olivier Lambert
1477b241be fix(XOSAN): replace old picture 2017-08-31 16:08:11 +02:00
Olivier Lambert
848330c188 feat(XOSAN): add pics for disperse 2017-08-31 16:05:31 +02:00
Olivier Lambert
33b728fdc3 feat(XOSAN): correlate examples and pictures 2017-08-31 09:57:09 +02:00
Olivier Lambert
aec4069eca fix(XOSAN): reduce image size 2017-08-31 09:51:54 +02:00
Olivier Lambert
2221f8afb0 feat(XOSAN): add doc content and first pics 2017-08-31 09:50:00 +02:00
Olivier Lambert
08b845a51e fix(xosan): multiple sentences fixes 2017-08-25 13:53:14 +02:00
marcpezin
39561ee4e7 adding a guide to access the beta (phase II) (#100) 2017-08-24 18:16:16 +02:00
Olivier Lambert
9879eef3c6 feat(xosan): add types in summary 2017-08-18 19:29:35 +02:00
Olivier Lambert
7eda47a9b3 feat(xosan): add disperse type 2017-08-18 19:26:58 +02:00
Olivier Lambert
fe1d4c345d XOSAN content (#99)
* feat(xosan): start to work on XOSAN doc
2017-08-18 17:08:03 +02:00
marcpezin
bc818b7873 Update purchase.md 2017-08-11 10:45:05 +02:00
marcpezin
f850fe5404 How to purchase with a quote
Adding a line about what to do to purchase with a quote
2017-08-11 10:44:28 +02:00
marcpezin
1fb3c73e51 Automatic quotation doc (#98)
* Automatic quotation doc
2017-08-11 10:41:51 +02:00
Olivier Lambert
f8a86d27dd fix(backup reports): add file 2017-08-10 18:17:22 +02:00
Olivier Lambert
59d222db72 fix(backup report): incorrect filename 2017-08-10 18:16:57 +02:00
marcpezin
f4ad9cd17a Backup reports (#97)
* Backup reports
2017-08-10 18:10:45 +02:00
Olivier Lambert
da93883b6c move paragraph on top 2017-07-20 09:29:45 +02:00
Olivier Lambert
d86d81e63d add XOA deploy error 2017-07-19 10:23:49 +02:00
marcpezin
0610d977f3 Upgrade Documentation (#95)
Adding a section regarding how to upgrade an active plan.
2017-07-18 17:53:13 +02:00
marcpezin
e11fb476b1 adding general troubleshooting to the panel 2017-06-30 14:47:46 +02:00
Olivier Lambert
28baa2ab7f Merge pull request #94 from vatesfr/errors-and-troubleshooting
Common errors and troubleshootting
2017-06-30 14:33:32 +02:00
marcpezin
7b97202ef8 Could not find the base VM
Adding new troubleshooting "Could not find the base VM"
2017-06-27 14:37:17 +02:00
marcpezin
e6a71f44ca Troubleshooting "Could not find the base VM"
Adding the Troubleshooting for "Could not find the base VM"
2017-06-27 14:35:06 +02:00
marcpezin
2646fa9eda minor correction
typo correction
2017-06-27 14:23:00 +02:00
marcpezin
95f71adcef Section addition - open a ticket
New section linking to the personal space for opening a ticket.
2017-06-26 17:09:30 +02:00
marcpezin
9817158f2e No solution section
Adding a section for user with no solution on this page.
2017-06-26 17:04:45 +02:00
marcpezin
0e0faf07c2 update #1 - existing troubleshooting
Existing troubleshooting documentation all bring at the same place.
2017-06-26 16:53:11 +02:00
marcpezin
1009c8945e Debugging section
Adding a generic debugging section.
2017-06-26 16:52:46 +02:00
marcpezin
cb8cc6b274 Rename general-troubleshooting to general-troubleshooting.md 2017-06-26 16:20:42 +02:00
marcpezin
e2ea78578b New document - Common errors and troubleshootting
Creating the document.
2017-06-26 16:18:28 +02:00
marcpezin
4d494b891c ⚠️ sign was not displayed on the XO docs
Put the sentence in bold.
2017-06-19 16:19:28 +02:00
Olivier Lambert
82ded7d160 Merge pull request #92 from vatesfr/purchase-process-modification
Add files via upload
2017-06-19 16:14:29 +02:00
marcpezin
7d211bdb8f Update through_purchase_department.md 2017-06-19 16:09:37 +02:00
marcpezin
f1abb402fb purchase menu change
new screenshot for the purchase menu.
2017-06-19 14:51:19 +02:00
marcpezin
a16a96664f Update directpurchase.md 2017-06-19 14:47:51 +02:00
marcpezin
9edad84198 purchase modification
purchase for my own use
2017-06-19 14:46:51 +02:00
marcpezin
debf2f5416 direct purchase
change in the purchase menu
2017-06-19 14:42:45 +02:00
marcpezin
5107725252 direct purchase
Modification of purchase menu.
2017-06-19 14:41:44 +02:00
marcpezin
c6dfe43119 direct-purchase
Modification of purchase menu.
2017-06-19 14:40:00 +02:00
marcpezin
24e0d2c815 Update reseller
Regarding modifications incoming, some improvement for the reseller documentation.
2017-06-16 14:11:15 +02:00
marcpezin
ebf895d1b9 new screenshot for reseller
Adding a screenshot of the reseller space to the doc.
2017-06-16 14:06:09 +02:00
marcpezin
bceda43ff2 Broken link
corrected the broken link of the issue #93
2017-06-16 10:56:33 +02:00
marcpezin
d69597636c Update through_purchase_department.md 2017-06-16 10:50:38 +02:00
marcpezin
9ff66b9394 Update through_purchase_department.md 2017-06-16 10:46:01 +02:00
marcpezin
d28d3a92e5 Add files via upload 2017-06-16 10:33:59 +02:00
marcpezin
21d14ab3c7 Add files via upload 2017-06-16 10:15:48 +02:00
Julien Fontanet
078f319fe1 0.1.1 2017-06-07 11:25:44 +02:00
Julien Fontanet
0f0e785871 fix: ensure vdi.physical_utilisation is a number 2017-06-07 11:25:39 +02:00
Olivier Lambert
ed08417fc2 fix(lb): remove useless/outdated doc 2017-05-25 15:14:45 +02:00
Olivier Lambert
39f9911e67 fix(xo): fix typo 2017-05-24 16:18:45 +02:00
Olivier Lambert
da5899b5d3 feat(various): improve the doc in multiple sections 2017-05-24 14:27:40 +02:00
Olivier Lambert
0cc45d085a fix(backup): typo 2017-05-23 16:37:15 +02:00
Olivier Lambert
cce456242b feat(backup): add link to the blog post about coalescing 2017-05-23 16:34:39 +02:00
Olivier Lambert
0eee44fb0d fix(summary): add bkp tblshooting 2017-05-23 16:28:42 +02:00
Olivier Lambert
597d568183 feat(backup): add troubleshooting for backups 2017-05-23 16:26:18 +02:00
Olivier Lambert
fee6a56af1 feat(xoa): remove useless wget thing since xoa deploy script works 2017-05-22 15:18:47 +02:00
Olivier Lambert
f7b094819e feat(search): add search filter doc 2017-05-22 12:16:37 +02:00
Olivier Lambert
f7842b5adc Merge pull request #90 from vatesfr/auto-deploy
feat(deploy): update doc for autodeploy
2017-05-18 16:53:05 +02:00
Olivier Lambert
58f2ec91fb fix(deploy): remove HTTPS because of XS brain damage regarding HTTP libs 2017-05-18 16:52:16 +02:00
Olivier Lambert
61206a3610 feat(deploy): update doc for autodeploy 2017-05-18 10:15:21 +02:00
Julien Fontanet
c18392d036 fix(self-service): feature has been released 2017-05-17 09:18:09 +02:00
Julien Fontanet
7fe1aa443b fix(xoa#timezone): prefix command with sudo 2017-05-12 14:19:22 +02:00
Olivier Lambert
044d9cb4dc fix(docker): add links for other XS versions 2017-05-11 16:20:59 +02:00
Olivier Lambert
f8795fa181 feat(xoa script): add details for using new xoa helpers scripts 2017-05-11 15:29:27 +02:00
Julien Fontanet
4e4c85121c 0.1.0 2017-05-11 15:27:15 +02:00
Julien Fontanet
019d6f4cb6 feat: display VDI size 2017-05-11 15:27:06 +02:00
Julien Fontanet
725b0342d1 fix: Xen → XenServer 2017-05-11 15:22:49 +02:00
Julien Fontanet
c93ccb8111 feat: handle -h and --help flags 2017-05-11 15:22:12 +02:00
Julien Fontanet
670befdaf6 chore(package): update all dependencies 2017-05-11 15:19:08 +02:00
Olivier Lambert
b456fa75e0 feat(doc): update doc 2017-05-06 11:02:29 +02:00
AJ Moon
9832ec0b1d fix(from sources): removed redundant 'yarn run build' (#87)
This commit will be reverted when `npm` 5 is released and `yarn` changes its behavior to align with it.
2017-05-03 09:54:33 +02:00
Julien Fontanet
55eefd865f 0.0.4 2017-03-30 16:51:27 +02:00
Julien Fontanet
43e5d610e3 fix(package): jest config testPathDirs → roots 2017-03-30 16:51:17 +02:00
Julien Fontanet
b1245bc5be fix(usage): Xen → XenServer 2017-03-30 16:50:44 +02:00
Julien Fontanet
c2feab245e fix: update yarn.lock 2017-03-30 16:48:18 +02:00
Julien Fontanet
bd3acc634e feat(troubleshooting): self-signed certificate 2017-03-14 16:04:52 +01:00
Julien Fontanet
f32ee571ac feat(troubleshooting): memory section 2017-03-09 11:36:00 +01:00
Julien Fontanet
cb3753213e fix(README): Xen → XenServer 2017-03-08 14:19:21 +01:00
Julien Fontanet
826d4de16c Use yarn instead of npm 2017-03-06 10:23:31 +01:00
greenkeeper[bot]
ec8c7a24af chore(package): update jest to version 19.0.1 (#2)
https://greenkeeper.io/
2017-02-22 12:10:24 +01:00
Olivier Lambert
b7ac721593 add info on fl restore 2017-02-08 15:43:27 +01:00
greenkeeper[bot]
2456be2da3 chore(package): update tslint-config-standard to version 3.0.0 (#6)
https://greenkeeper.io/
2017-01-19 10:10:08 +01:00
Julien Fontanet
8c5d4240f9 chore(package): update all dependencies 2017-01-17 10:34:25 +01:00
Julien Fontanet
b1e12d1542 chore: add yarn.lock 2017-01-17 10:28:34 +01:00
Julien Fontanet
a58d7d2ff4 chore(package): use husky instead of ghooks 2017-01-17 10:28:03 +01:00
Julien Fontanet
5308b8b9ed fix(README): should be installed globally 2017-01-17 10:26:32 +01:00
greenkeeper[bot]
c15dffce8f chore(package): update @types/node to version 7.0.0 (#5)
https://greenkeeper.io/
2017-01-11 09:22:18 +01:00
Olivier Lambert
1566762729 fix typos 2017-01-03 11:01:06 +01:00
Olivier Lambert
f0b758fd4b add doc on quiesced snapshots and a warning on SMB 2017-01-03 10:59:40 +01:00
Olivier Lambert
0df04c84d2 add correct link 2016-12-20 16:36:08 +01:00
Olivier Lambert
6f1b91b1e5 add file level restore info 2016-12-20 16:32:12 +01:00
Olivier Lambert
95af905b7d exclude disks doc 2016-12-20 10:07:46 +01:00
Olivier Lambert
67efe31e63 fix(remote): better doc explaining where to add remotes 2016-12-19 14:36:35 +01:00
Olivier Lambert
46c7e89363 feat(xoa): add registration in XOA page 2016-12-06 10:44:45 +01:00
greenkeeper[bot]
874680462e chore(package): update dependencies (#4)
https://greenkeeper.io/
2016-11-28 15:13:31 +01:00
greenkeeper[bot]
bb42540775 chore(package): update tslint-config-standard to version 2.0.0 (#3)
https://greenkeeper.io/
2016-11-21 23:27:47 +01:00
Olivier Lambert
9d221df259 feat(glossary): added glossary 2016-11-18 15:27:51 +01:00
Olivier Lambert
fd2a123e20 fix(slack): forgot one image 2016-11-18 15:14:34 +01:00
Olivier Lambert
4696b6563c feat(slack): add doc for slack 2016-11-18 15:12:59 +01:00
Julien Fontanet
b18511c905 chore(package): update all dependencies 2016-11-08 15:44:21 +01:00
Olivier Lambert
1a0e72c468 upate doc for XOA 2016-11-05 00:28:01 +01:00
Olivier Lambert
f6f749d583 fix(doc): remove useless files 2016-11-03 13:26:07 +01:00
Olivier Lambert
72f0f8602d fix(doc): fix broken images 2016-11-03 13:25:38 +01:00
greenkeeper[bot]
5c660f4f64 chore(package): update dependencies (#1)
https://greenkeeper.io/
2016-11-02 09:33:33 +01:00
Julien Fontanet
f2bae73f77 0.0.3 2016-10-31 17:32:32 +01:00
Julien Fontanet
e54d34f269 feat(cli): prefix labels if colors not supported 2016-10-31 17:32:00 +01:00
Julien Fontanet
6470cbd2ee 0.0.2 2016-10-31 17:08:02 +01:00
Julien Fontanet
c06ebcb4a4 fix(askPassword): prompt on stderr 2016-10-31 17:07:34 +01:00
Julien Fontanet
3eaa72c98c 0.0.1 2016-10-31 16:37:40 +01:00
Julien Fontanet
694fff060d fix(package): fix bin 2016-10-31 16:37:36 +01:00
Julien Fontanet
2705062ac3 chore(README): replace placeholders 2016-10-31 16:31:59 +01:00
Julien Fontanet
3df055a296 chore(package): publish 2016-10-31 16:29:36 +01:00
Julien Fontanet
802bc15e0c initial commit 2016-10-31 16:27:15 +01:00
Olivier Lambert
6933c42a1b minor doc fix 2016-10-27 19:42:59 +02:00
Olivier Lambert
349b117c8c minor fixes 2016-10-27 13:51:03 +02:00
Olivier Lambert
80b13b2ad7 add export/import 2016-10-27 13:37:16 +02:00
Olivier Lambert
2825f8540b XOA doc fixes 2016-10-27 13:02:33 +02:00
Olivier Lambert
fed3d82898 add doc for new XOA coming soon 2016-10-27 11:29:17 +02:00
Olivier Lambert
1805f130bc precisions on ACLs 2016-10-27 10:01:34 +02:00
Olivier Lambert
86baf3c81e add notice in cont repl 2016-10-21 16:11:23 +02:00
Julien Fontanet
37e6778589 Update from_the_sources.md 2016-10-20 14:17:45 +02:00
Olivier Lambert
b368925dfc feat(doc): improve example and add build phase 2016-10-04 14:00:50 +02:00
Julien Fontanet
3e848ebfe3 Create ISSUE_TEMPLATE.md 2016-10-03 16:23:31 +02:00
Julien Fontanet
ad2de40a9d chore(package): update @types/through2 to v2.0.29 2016-09-23 09:41:05 +02:00
Julien Fontanet
19298570f8 chore(package): remove unused dep 2016-09-19 14:55:50 +02:00
Julien Fontanet
1da4d1f1e9 chore: repo moved to vatesfr 2016-09-19 14:53:33 +02:00
Julien Fontanet
fe4e9c18fa feat(cli): print usage on missing argument 2016-09-19 14:48:52 +02:00
Julien Fontanet
2c9f84f17f feat(package): add description and keywords 2016-09-19 14:48:52 +02:00
Julien Fontanet
0b2e76600b feat(README): add usage 2016-09-19 14:48:52 +02:00
Julien Fontanet
873554fc01 It works! 2016-09-19 14:43:39 +02:00
Julien Fontanet
82e2d013ae chore(package): reorder entry in package.json 2016-09-19 10:23:33 +02:00
Julien Fontanet
1eb5e80f1f fix(types): fix type definitions 2016-09-19 10:23:18 +02:00
Julien Fontanet
9c0ab5b3cb Initial commit 2016-09-16 18:09:18 +02:00
Olivier Lambert
253180b02f update import/export doc 2016-09-13 12:38:15 +02:00
Olivier Lambert
07ba868a26 add smart backup page 2016-09-13 12:27:31 +02:00
Olivier Lambert
31846074a2 remove useless images 2016-09-13 12:20:08 +02:00
Olivier Lambert
dc51545583 Reorg doc. Better backup doc 2016-09-13 11:29:57 +02:00
Olivier Lambert
2696b5ca9b improve the roadmap doc 2016-09-12 22:46:47 +02:00
Olivier Lambert
8c8f62374d feature(docker): update doc with more recent screen and XS 7 install procedure 2016-09-12 22:40:37 +02:00
Olivier Lambert
de7b94ea48 Update acls.md 2016-09-12 18:08:31 +02:00
Olivier Lambert
38df724e66 Update acls.md 2016-09-12 18:03:54 +02:00
Olivier Lambert
180de5b9c9 Merge pull request #81 from fufroma/master
Enhance reverse proxy configuration example.
2016-09-07 04:22:36 -04:00
fufroma
a7b13df315 Enhance reverse proxy configuration example.
Fix vatesfr/xo-web#1474
2016-09-07 10:18:14 +02:00
Olivier Lambert
6d878f5cc8 feat(doc): various updates 2016-08-17 11:44:02 +02:00
Olivier Lambert
c216213081 feat(vm creation): add content for VM creation 2016-08-15 11:36:27 +02:00
Olivier Lambert
be4dda141b update troubleshooting update 2016-08-02 10:43:40 +02:00
Olivier Lambert
e4b45eef88 plugin page with xo5 view 2016-08-02 10:41:26 +02:00
Olivier Lambert
97d83364f3 fix some trial info for v5 2016-08-02 10:30:28 +02:00
Olivier Lambert
deaf6bfdb9 add trial with v5 UI 2016-08-02 10:28:01 +02:00
Olivier Lambert
ef19892ae9 add update content for v5 2016-08-02 10:19:41 +02:00
Olivier Lambert
a6af324c8d fix wrong image url 2016-07-30 20:17:15 +02:00
Olivier Lambert
9608f6f2d7 add missing image 2016-07-30 20:15:51 +02:00
Olivier Lambert
fdd45c94d6 add patching doc 2016-07-30 20:13:54 +02:00
Olivier Lambert
374fe7d868 fix(build): remove useless build command 2016-07-29 11:08:51 +02:00
Olivier Lambert
d93a89ca92 chore(misc): remove useless text 2016-07-28 18:39:00 +02:00
Olivier Lambert
3c2a0f1fbf chore(misc): reorg some text 2016-07-28 18:36:50 +02:00
Olivier Lambert
d3b06c30de feat(misc): update doc on v5 2016-07-28 18:18:48 +02:00
Olivier Lambert
7ef6b4fcda feat(admin): start to work on v5 UI doc 2016-07-28 17:48:31 +02:00
Olivier Lambert
5352de1b01 feat(seed): add blocked operation for seed cont. replication 2016-07-28 13:52:01 +02:00
Olivier Lambert
5574747054 chore(all): move assets 2016-07-06 15:00:34 +02:00
Olivier Lambert
5b3f11d09b update readme 2016-07-04 18:33:45 +02:00
Olivier Lambert
f9e88fc88f fix(gitignore): add gitignore for book and node_modules folders 2016-07-04 18:28:08 +02:00
Olivier Lambert
f2c94dc31d fix(book.json): test version superior than 3 2016-07-04 18:11:38 +02:00
Olivier Lambert
400c8938b7 fix(book.json): test version under 3 2016-07-04 18:08:03 +02:00
Olivier Lambert
0d45cc7479 fix(book.json): another fix, again and again 2016-07-04 17:58:30 +02:00
Olivier Lambert
4cfe825b61 fix(book.json): another fix, again 2016-07-04 17:56:13 +02:00
Olivier Lambert
b723e24ac8 fix(book.json): another fix 2016-07-04 17:55:19 +02:00
Olivier Lambert
f48f4b85d8 fix(book.json): try a new version number 2016-07-04 17:53:15 +02:00
Olivier Lambert
8822f0303d fix(book.json): minor fix 2016-07-04 17:47:11 +02:00
Olivier Lambert
6175a8c8c1 fix(summary): moving summary at the right place 2016-07-04 17:37:29 +02:00
Olivier Lambert
0da8f44922 fix(book.json): fix config 2016-07-04 17:35:08 +02:00
Olivier Lambert
05f1fcfb55 fix(all): links 2016-07-04 17:30:32 +02:00
Olivier Lambert
cdf3c16cd9 fix(all): bad relative path fixed 2016-07-04 17:22:10 +02:00
Olivier Lambert
a7bdd1798e fix(arch): missing images 2016-07-04 17:16:12 +02:00
Olivier Lambert
ac47fc602b chore(all): major reorg of the doc 2016-07-04 17:05:27 +02:00
Olivier Lambert
29cb8fbdfc Update backups.md 2016-05-21 16:49:27 +02:00
Olivier Lambert
ee329f0def Update continuous_replication.md 2016-05-21 14:30:22 +02:00
Olivier Lambert
e58e4d65e3 Update full_backups.md 2016-05-21 14:26:21 +02:00
Olivier Lambert
9286784ce5 Add files 2016-05-21 14:25:09 +02:00
Julien Fontanet
9ded80448c Update from_the_sources.md 2016-03-21 18:10:09 +01:00
Julien Fontanet
d82dd63e11 Update google.md 2016-03-21 15:16:07 +01:00
Julien Fontanet
9e8d366f38 Update github.md 2016-03-21 15:15:43 +01:00
Julien Fontanet
3eb742d0d1 Update saml.md 2016-03-21 15:15:06 +01:00
Julien Fontanet
df6159fa62 Update ldap.md 2016-03-21 15:14:32 +01:00
Julien Fontanet
8de5135f15 Update troubleshooting.md 2016-03-11 15:15:18 +01:00
Olivier Lambert
f3b4a53666 Update troubleshooting.md 2016-03-10 15:13:52 +01:00
Olivier Lambert
a0d37cf2b8 Update xoa.md 2016-03-08 16:54:41 +01:00
Olivier Lambert
533899da09 Update from_the_sources.md 2016-03-03 15:01:45 +01:00
Olivier Lambert
93fbc8b1dd Update load_balancing.md 2016-03-03 13:05:42 +01:00
Olivier Lambert
6157df4ebe Update load_balancing.md 2016-03-03 13:04:12 +01:00
Olivier Lambert
069743038a Update load_balancing.md 2016-03-03 13:03:38 +01:00
Olivier Lambert
07823e4109 Update load_balancing.md 2016-03-03 13:02:35 +01:00
Olivier Lambert
0a8d7562ca Update xoa.md 2016-03-03 10:42:53 +01:00
Olivier Lambert
2c8dea7a45 Update editions.md 2016-02-26 00:00:20 +01:00
Olivier Lambert
cf9bcb09d5 Update SUMMARY.md 2016-02-25 23:59:47 +01:00
Olivier Lambert
19a20f5b3e Update trial.md 2016-02-25 23:59:38 +01:00
Olivier Lambert
023251d090 Update SUMMARY.md 2016-02-25 23:58:21 +01:00
Olivier Lambert
23e9ee4ae2 Create trial.md 2016-02-25 23:58:20 +01:00
Olivier Lambert
2e8289d4dc Update editions.md 2016-02-25 23:58:18 +01:00
Olivier Lambert
b2a8b643e7 Update SUMMARY.md 2016-02-25 23:58:05 +01:00
Olivier Lambert
64a91abd12 Update editions.md 2016-02-25 23:57:55 +01:00
Olivier Lambert
4076fec42f Update editions.md 2016-02-25 23:52:23 +01:00
Olivier Lambert
1b80ae3871 Update from_the_sources.md 2016-02-25 22:42:23 +01:00
Olivier Lambert
eff8f7fa7a Merge pull request #77 from cactus/patch-1
Update installation_freebsd.md
2016-02-25 22:37:37 +01:00
eli
de4608c0c3 Update installation_freebsd.md
Add some text regarding optional pkg installation that can save some time during the `npm install` phase.
2016-02-25 13:32:27 -08:00
Olivier Lambert
4ed6186de7 Update from_the_sources.md 2016-02-24 16:52:02 +01:00
Olivier Lambert
1734083219 Update purchase.md 2016-02-23 18:43:57 +01:00
Olivier Lambert
4c512fc0d0 Update invoices.md 2016-02-23 18:39:45 +01:00
Olivier Lambert
eb78d8229f Create invoices.png 2016-02-23 18:38:24 +01:00
Olivier Lambert
f279b32eb0 Update SUMMARY.md 2016-02-23 18:36:11 +01:00
Olivier Lambert
336f47a9ca Create invoices.md 2016-02-23 18:36:09 +01:00
Olivier Lambert
fd2bc8a719 Update editions.md 2016-02-23 18:36:05 +01:00
Olivier Lambert
f831dae65a Update SUMMARY.md 2016-02-23 18:35:54 +01:00
Olivier Lambert
c4fd6650c3 Create editions.md 2016-02-23 18:35:53 +01:00
Olivier Lambert
0ab6db4a97 Update purchase.md 2016-02-23 18:35:50 +01:00
Olivier Lambert
593a78cd8d Update SUMMARY.md 2016-02-23 18:35:31 +01:00
Olivier Lambert
c50a2d87f1 Update SUMMARY.md 2016-02-23 18:35:18 +01:00
Olivier Lambert
b6056e9b0f Update SUMMARY.md 2016-02-23 18:35:08 +01:00
Olivier Lambert
660002dde8 Update SUMMARY.md 2016-02-23 18:34:30 +01:00
Olivier Lambert
3031bac5b6 Update reseller.md 2016-02-23 15:44:48 +01:00
Olivier Lambert
3020f3cc15 Update self_service.md 2016-02-23 15:29:58 +01:00
Olivier Lambert
2db8e2e1ea Update purchase.md 2016-02-23 14:53:48 +01:00
Olivier Lambert
df3beb6be2 Update purchase.md 2016-02-23 14:49:38 +01:00
Olivier Lambert
86f2cacc6a Update reseller.md 2016-02-23 14:41:49 +01:00
Olivier Lambert
6a37b9649d Create partner_request.png 2016-02-23 14:37:06 +01:00
Olivier Lambert
6f794380ac Update reseller.md 2016-02-23 14:25:28 +01:00
Olivier Lambert
cf5a092462 Update through_purchase_department.md 2016-02-23 14:24:06 +01:00
Olivier Lambert
8828d2e59e Update through_purchase_department.md 2016-02-23 14:23:10 +01:00
Olivier Lambert
fe78af36a9 Update through_purchase_department.md 2016-02-23 14:22:34 +01:00
Olivier Lambert
1a330cbe89 Create purchaser_button.png 2016-02-23 14:21:30 +01:00
Olivier Lambert
09a8cd30d2 Update through_purchase_department.md 2016-02-23 14:19:28 +01:00
Olivier Lambert
7ca04e2e19 Update directpurchase.md 2016-02-23 14:17:09 +01:00
Olivier Lambert
6daf84faee Update directpurchase.md 2016-02-23 14:15:28 +01:00
Olivier Lambert
b1c3ab0ee4 Create member_purchase3.png 2016-02-23 14:15:00 +01:00
Olivier Lambert
84234bd708 Create member_purchase2.png 2016-02-23 14:13:37 +01:00
Olivier Lambert
79de7ad301 Create member_purchase.png 2016-02-23 14:11:50 +01:00
Olivier Lambert
b62a88aa0f Update purchase.md 2016-02-23 14:09:07 +01:00
Olivier Lambert
936e0ddf22 Update purchase.md 2016-02-23 14:07:25 +01:00
Olivier Lambert
470bbd9d25 Update purchase.md 2016-02-23 14:06:03 +01:00
Olivier Lambert
843632b2e4 Update purchase.md 2016-02-23 14:05:34 +01:00
Olivier Lambert
a9e54a069e Update SUMMARY.md 2016-02-23 14:03:25 +01:00
Olivier Lambert
1c2b052d15 Update SUMMARY.md 2016-02-23 14:03:22 +01:00
Olivier Lambert
a7911429ff Update SUMMARY.md 2016-02-23 14:03:19 +01:00
Olivier Lambert
eb865bccab Create reseller.md 2016-02-23 14:03:17 +01:00
Olivier Lambert
c03b5b5014 Update SUMMARY.md 2016-02-23 14:03:14 +01:00
Olivier Lambert
cecd3d2cae Update SUMMARY.md 2016-02-23 14:03:01 +01:00
Olivier Lambert
8ff6807a3a Create through_purchase_department.md 2016-02-23 14:02:58 +01:00
Olivier Lambert
563cb9a3c7 Update SUMMARY.md 2016-02-23 14:02:53 +01:00
Olivier Lambert
b1b2d0ed3a Update directpurchase.md 2016-02-23 14:02:01 +01:00
Olivier Lambert
cda34f372a Update SUMMARY.md 2016-02-23 14:01:48 +01:00
Olivier Lambert
f82845548c Update SUMMARY.md 2016-02-23 14:01:41 +01:00
Olivier Lambert
972cf9bd76 Create directpurchase.md 2016-02-23 14:01:39 +01:00
Olivier Lambert
8ea197c21d Update SUMMARY.md 2016-02-23 14:01:20 +01:00
Olivier Lambert
dcbc1af0e7 Update purchase.md 2016-02-23 14:00:57 +01:00
Olivier Lambert
2df8ce3575 Update purchase.md 2016-02-23 13:59:41 +01:00
Olivier Lambert
5a67b9ea89 Update purchase.md 2016-02-23 13:25:30 +01:00
Olivier Lambert
0862732739 Update purchase.md 2016-02-23 13:22:48 +01:00
Olivier Lambert
f3cc2a62da Update SUMMARY.md 2016-02-23 11:27:52 +01:00
Olivier Lambert
75288f16ea Create purchase.md 2016-02-23 11:27:50 +01:00
Olivier Lambert
a185ab01df Update SUMMARY.md 2016-02-23 11:27:46 +01:00
Olivier Lambert
e184763b91 Update features.md 2016-02-23 11:26:23 +01:00
Olivier Lambert
c890d1b8be Create smartphone1.jpg 2016-02-23 11:26:12 +01:00
Olivier Lambert
ddb173ebb9 Update roadmap.md 2016-02-22 17:58:55 +01:00
Olivier Lambert
456a55907d Update self_service.md 2016-02-22 17:54:49 +01:00
Olivier Lambert
dd91b037ea Update self_service.md 2016-02-22 11:17:52 +01:00
Olivier Lambert
fe83402210 Update self_service.md 2016-02-22 11:17:09 +01:00
Olivier Lambert
d3a3fd67b9 Update load_balancing.md 2016-02-21 22:18:07 +01:00
Olivier Lambert
a4d173aa2c Update load_balancing.md 2016-02-21 22:04:23 +01:00
Olivier Lambert
e706256fb1 Update roadmap.md 2016-02-21 22:03:54 +01:00
Olivier Lambert
2664af0db5 Update self_service.md 2016-02-19 17:30:56 +01:00
Olivier Lambert
a710b6ffe3 Create selfservice_createvm.png 2016-02-19 17:29:56 +01:00
Olivier Lambert
066c477f9b Update self_service.md 2016-02-19 17:27:05 +01:00
Olivier Lambert
38ab23b927 Create selfservice_newvm.png 2016-02-19 17:26:15 +01:00
Olivier Lambert
add5f1754c Update self_service.md 2016-02-19 17:25:07 +01:00
Olivier Lambert
6468c01a79 Update self_service.md 2016-02-19 17:19:48 +01:00
Olivier Lambert
0d1c4d367a Update self_service.md 2016-02-19 17:18:27 +01:00
Olivier Lambert
7fba73f0df Create selfservice_recap.png 2016-02-19 17:17:59 +01:00
Olivier Lambert
ff904f50cb Update self_service.md 2016-02-19 17:17:57 +01:00
Olivier Lambert
e1b96a7a74 Update self_service.md 2016-02-19 17:15:45 +01:00
Olivier Lambert
db87d6ef8a Update self_service.md 2016-02-19 17:15:12 +01:00
Olivier Lambert
95390670c4 Create selfservice_creation.png 2016-02-19 17:14:58 +01:00
Olivier Lambert
5e198b248f Update self_service.md 2016-02-19 17:12:06 +01:00
Olivier Lambert
f4b92386bd Create selfservice_menu.png 2016-02-19 17:11:50 +01:00
Olivier Lambert
39c60ba387 Update self_service.md 2016-02-19 17:11:14 +01:00
Olivier Lambert
39387b828c Update self_service.md 2016-02-19 17:04:18 +01:00
Olivier Lambert
e845a14f26 Update load_balancing.md 2016-02-19 17:02:54 +01:00
Olivier Lambert
d0fe9671f0 Update xoa.md 2016-02-18 16:56:02 +01:00
Olivier Lambert
f82caf2b09 Update cloudinit.md 2016-02-17 15:58:50 +01:00
Olivier Lambert
30f77bfbff Update configuration.md 2016-02-16 17:04:43 +01:00
Olivier Lambert
bf20ea976f Update configuration.md 2016-02-16 17:04:39 +01:00
Olivier Lambert
e33bd22cb7 Update configuration.md 2016-02-16 17:03:54 +01:00
Olivier Lambert
33fed71626 Update configuration.md 2016-02-16 16:16:22 +01:00
Olivier Lambert
7e339b9a0a Update administration.md 2016-02-16 16:07:57 +01:00
Olivier Lambert
bc8c5acb66 Update configuration.md 2016-02-16 16:07:00 +01:00
Olivier Lambert
0a0dff877f Update administration.md 2016-02-16 16:03:18 +01:00
Olivier Lambert
54e4c377d8 Update administration.md 2016-02-16 16:00:29 +01:00
Olivier Lambert
ff78acf4c5 Update load_balancing.md 2016-02-08 19:36:26 +01:00
Olivier Lambert
2b726730e9 Update delta_backups.md 2016-02-02 17:02:27 +01:00
Olivier Lambert
41f3f4d816 Update administration.md 2016-02-02 10:08:54 +01:00
Olivier Lambert
cb591f77e9 Update administration.md 2016-02-02 10:07:15 +01:00
Olivier Lambert
d508f7b4ed Create cpu_weight.png 2016-02-02 10:06:27 +01:00
Olivier Lambert
1c8388f3fd Update roadmap.md 2016-01-25 17:24:29 +01:00
Olivier Lambert
93af3900af Update continuous_replication.md 2016-01-19 21:41:29 +01:00
Olivier Lambert
13ae7ecf59 Update from_the_sources.md 2016-01-19 10:47:07 +01:00
Olivier Lambert
76a7c6dad8 Update from_the_sources.md 2016-01-18 13:12:51 +01:00
Olivier Lambert
93e830e09e Update continuous_replication.md 2016-01-17 00:14:16 +01:00
Olivier Lambert
0151fcc626 Update configuration.md 2016-01-16 13:32:10 +01:00
Olivier Lambert
2966b9007c Update from_the_sources.md 2016-01-16 13:29:31 +01:00
Olivier Lambert
cec868d45f Update continuous_replication.md 2016-01-16 09:39:33 +01:00
Olivier Lambert
0488bbc8a1 Update continuous_replication.md 2016-01-16 09:39:10 +01:00
Olivier Lambert
4a766eb9e7 Update continuous_replication.md 2016-01-16 09:38:50 +01:00
Olivier Lambert
7c7661375c Update self_service.md 2016-01-15 12:11:19 +01:00
Olivier Lambert
791fa36d73 Update delta_backups.md 2016-01-14 18:14:07 +01:00
Olivier Lambert
6faf1ce65d Update SUMMARY.md 2016-01-14 18:14:03 +01:00
Olivier Lambert
f4bc71af7e Update delta_backups.md 2016-01-14 18:13:37 +01:00
Olivier Lambert
7872430235 Update delta_backups.md 2016-01-14 18:11:08 +01:00
Olivier Lambert
5621af6a4c Update SUMMARY.md 2016-01-14 17:39:48 +01:00
Olivier Lambert
bcf4945ea1 Update health.md 2016-01-14 17:35:51 +01:00
Olivier Lambert
be4403d8ec Update visualizations.md 2016-01-14 17:35:44 +01:00
Olivier Lambert
4acf2aad38 Update health.md 2016-01-14 17:34:34 +01:00
Olivier Lambert
5c32f6a1f2 Update visualizations.md 2016-01-14 17:34:20 +01:00
Olivier Lambert
40f81fbf2e Update SUMMARY.md 2016-01-14 17:34:06 +01:00
Olivier Lambert
f4d9f226f6 Update SUMMARY.md 2016-01-14 17:34:00 +01:00
Olivier Lambert
4d52c559c6 Update health.md 2016-01-14 17:33:53 +01:00
Olivier Lambert
4cad5382df Update SUMMARY.md 2016-01-14 17:33:11 +01:00
Olivier Lambert
888110152f Create health.md 2016-01-14 17:33:09 +01:00
Olivier Lambert
61e0e9ecd2 Update SUMMARY.md 2016-01-14 17:33:04 +01:00
Olivier Lambert
53c694630c Update continuous_replication.md 2016-01-09 08:19:35 +01:00
Olivier Lambert
dc3383a237 Update self_service.md 2016-01-04 16:23:20 +01:00
Olivier Lambert
43d7a4b9f1 Update troubleshooting.md 2015-12-30 11:20:36 +01:00
Olivier Lambert
e2669cb5d3 Update troubleshooting.md 2015-12-30 11:19:44 +01:00
Olivier Lambert
7e89a0bf42 Update from_the_sources.md 2015-12-28 13:57:43 +01:00
Olivier Lambert
680880d857 Update features.md 2015-12-22 13:48:30 +01:00
Olivier Lambert
b08d026eec Update continuous_replication.md 2015-12-20 11:11:29 +01:00
Olivier Lambert
e9c2aeeca0 Update continuous_replication.md 2015-12-19 14:27:51 +01:00
Olivier Lambert
5fd178783f Update SUMMARY.md 2015-12-19 14:24:56 +01:00
Olivier Lambert
ddcc8a149d Create continuous_replication.md 2015-12-19 14:24:54 +01:00
Olivier Lambert
0f30157be2 Update SUMMARY.md 2015-12-19 14:24:49 +01:00
Olivier Lambert
80d3698481 Update roadmap.md 2015-12-19 14:24:41 +01:00
Olivier Lambert
07fb894c0e Update delta_backups.md 2015-12-18 18:07:39 +01:00
Olivier Lambert
5ca9654b2f Update delta_backups.md 2015-12-18 18:02:19 +01:00
Olivier Lambert
88ba3f3ff3 Update cloudinit.md 2015-12-18 11:15:55 +01:00
Olivier Lambert
03a3685f1d Update xoa.md 2015-12-17 16:19:13 +01:00
Olivier Lambert
fe12941494 Update alerts.md 2015-12-16 19:07:04 +01:00
Olivier Lambert
12eaa0a9b3 Update plugins.md 2015-12-16 19:03:34 +01:00
Olivier Lambert
782f8e1349 Update plugins.md 2015-12-16 19:02:22 +01:00
Olivier Lambert
cece40ed47 Create plugins.png 2015-12-16 19:01:45 +01:00
Olivier Lambert
4e7250c4c2 Update SUMMARY.md 2015-12-16 18:59:49 +01:00
Olivier Lambert
80f56ed41d Create plugins.md 2015-12-16 18:59:47 +01:00
Olivier Lambert
6fd67a8fd2 Update SUMMARY.md 2015-12-16 18:59:43 +01:00
Olivier Lambert
24d16438c1 Update SUMMARY.md 2015-12-16 18:59:37 +01:00
Olivier Lambert
2f5de232e1 Update authentication.md 2015-12-16 18:58:45 +01:00
Olivier Lambert
f8189b4874 Update administration.md 2015-12-16 18:57:41 +01:00
Olivier Lambert
1f9cac4e08 Update administration.md 2015-12-16 18:54:37 +01:00
Olivier Lambert
34b67b9ed9 Update SUMMARY.md 2015-12-16 18:44:38 +01:00
Olivier Lambert
27af2f263c Update cloudinit.md 2015-12-16 18:43:02 +01:00
Olivier Lambert
6c18c72620 Update SUMMARY.md 2015-12-16 18:39:13 +01:00
Olivier Lambert
2c41851564 Create cloudinit.md 2015-12-16 18:39:11 +01:00
Olivier Lambert
8df79730d1 Update SUMMARY.md 2015-12-16 18:39:06 +01:00
Olivier Lambert
c237c5bdcd Update contributing.md 2015-12-14 17:01:23 +01:00
Olivier Lambert
41175d8ff6 Update roadmap.md 2015-12-08 23:56:30 +01:00
Olivier Lambert
b1b28fa365 Update roadmap.md 2015-12-08 18:58:45 +01:00
Olivier Lambert
4bf3148596 Update administration.md 2015-12-07 21:24:36 +01:00
Olivier Lambert
0f29455dc5 Update features.md 2015-12-07 00:48:23 +01:00
Olivier Lambert
826b702fb9 Update administration.md 2015-12-04 14:41:11 +01:00
Olivier Lambert
b10f19b139 Update backups.md 2015-12-03 17:15:34 +01:00
Olivier Lambert
6b1ac2002b Update delta_backups.md 2015-12-03 17:13:18 +01:00
Olivier Lambert
5b91e5c685 Update load_balancing.md 2015-11-27 16:04:49 +01:00
Olivier Lambert
07b9e5f16a Update backups.md 2015-11-27 15:29:08 +01:00
Olivier Lambert
c4487d4aec Update backups.md 2015-11-27 15:29:07 +01:00
Olivier Lambert
9815acf6f7 Update backups.md 2015-11-27 15:28:57 +01:00
Olivier Lambert
2a94921f58 Update backups.md 2015-11-27 15:05:55 +01:00
Olivier Lambert
112ee94d79 Update administration.md 2015-11-27 12:54:58 +01:00
Olivier Lambert
8ae51cfd36 Update administration.md 2015-11-27 12:54:23 +01:00
Olivier Lambert
e6feb15704 Update backups.md 2015-11-27 12:53:00 +01:00
Olivier Lambert
fabff5954b Update scheduler.md 2015-11-27 12:51:25 +01:00
Olivier Lambert
d6b6df042d Update docker_support.md 2015-11-22 23:03:29 +01:00
Olivier Lambert
5db7b5f6c4 Update docker_support.md 2015-11-22 23:03:04 +01:00
Olivier Lambert
1b679bd8ec Update SUMMARY.md 2015-11-22 23:00:17 +01:00
Olivier Lambert
1e4660583b Create docker_support.md 2015-11-22 23:00:15 +01:00
Olivier Lambert
c6b16525e7 Update SUMMARY.md 2015-11-22 22:59:30 +01:00
Olivier Lambert
6c144493e0 Update SUMMARY.md 2015-11-22 22:59:26 +01:00
Olivier Lambert
4dd31cb6db Update xoa.md 2015-11-20 17:15:24 +01:00
Olivier Lambert
60bc923ca0 Update full_backups.md 2015-11-19 20:18:51 +01:00
Olivier Lambert
71f2e67321 Update roadmap.md 2015-11-19 19:44:23 +01:00
Olivier Lambert
60b2fdb319 Update disaster_recovery.md 2015-11-19 16:40:23 +01:00
Olivier Lambert
13739ca558 Update backups.md 2015-11-19 16:15:01 +01:00
Olivier Lambert
1a3ffb05ab Update SUMMARY.md 2015-11-19 16:14:16 +01:00
Olivier Lambert
beb5587b52 Update delta_backups.md 2015-11-19 16:14:09 +01:00
Olivier Lambert
d8eefb1293 Update delta_backups.md 2015-11-19 14:43:08 +01:00
Olivier Lambert
e0c1fd1d3c Update delta_backups.md 2015-11-19 14:41:46 +01:00
Olivier Lambert
788124e144 Update visualizations.md 2015-11-19 13:36:54 +01:00
Olivier Lambert
c8a337dd90 Update visualizations.md 2015-11-19 13:36:07 +01:00
Olivier Lambert
6332e73e38 Update disaster_recovery.md 2015-11-19 13:35:11 +01:00
Olivier Lambert
7e443c8aef Update rolling_snapshots.md 2015-11-19 13:34:40 +01:00
Olivier Lambert
c0b2be170b Update rolling_snapshots.md 2015-11-19 13:33:53 +01:00
Olivier Lambert
6bc6328ad2 Update full_backups.md 2015-11-19 13:33:36 +01:00
Olivier Lambert
c469f5b01e Update scheduler.md 2015-11-19 12:48:54 +01:00
Olivier Lambert
f7f666c383 Update scheduler.md 2015-11-19 11:57:03 +01:00
Olivier Lambert
e11fd76b35 Update SUMMARY.md 2015-11-19 11:54:59 +01:00
Olivier Lambert
d9ede0fd4f Update delta_backups.md 2015-11-19 11:25:46 +01:00
Olivier Lambert
061217791d Update delta_backups.md 2015-11-19 11:25:00 +01:00
Olivier Lambert
418099f893 Update delta_backups.md 2015-11-19 11:24:23 +01:00
Olivier Lambert
3925926693 Update roadmap.md 2015-11-19 11:23:44 +01:00
Olivier Lambert
eb52095081 Update delta_backups.md 2015-11-19 11:23:25 +01:00
Olivier Lambert
635acfd9af Update SUMMARY.md 2015-11-19 11:18:10 +01:00
Olivier Lambert
a4a06d1331 Create delta_backups.md 2015-11-19 11:18:08 +01:00
Olivier Lambert
3f58d0ae0c Update SUMMARY.md 2015-11-19 11:17:42 +01:00
Olivier Lambert
0f6ff55f80 Update SUMMARY.md 2015-11-19 11:17:26 +01:00
Olivier Lambert
1cf462a989 Update roadmap.md 2015-11-18 18:53:55 +01:00
Olivier Lambert
124afa9be7 Update administration.md 2015-11-18 17:31:08 +01:00
Julien Fontanet
d8334d1515 stable is the new stable branch. 2015-11-18 16:29:40 +01:00
Julien Fontanet
1a291b5ef4 Update book.json 2015-11-17 17:29:36 +01:00
Julien Fontanet
45e8cfabb2 Create styles/website.css 2015-11-17 17:26:04 +01:00
Julien Fontanet
411ef0b3fb Update book.json 2015-11-17 17:15:19 +01:00
Julien Fontanet
4b14b2a6a5 Update book.json 2015-11-17 17:10:53 +01:00
Julien Fontanet
c3c6aec2f1 Update book.json 2015-11-17 17:09:07 +01:00
Julien Fontanet
5e74e44ec1 Update book.json 2015-11-17 17:07:22 +01:00
Julien Fontanet
74d257e413 Update book.json 2015-11-17 17:06:36 +01:00
Julien Fontanet
38829421a9 Update book.json 2015-11-17 17:05:35 +01:00
Julien Fontanet
59407a71e9 Update book.json 2015-11-17 17:05:20 +01:00
Olivier Lambert
11c3668e5f Update backups.md 2015-11-17 16:57:56 +01:00
Olivier Lambert
7572dea71c Update backups.md 2015-11-17 16:57:05 +01:00
Olivier Lambert
5983b606fe Delete how_to_contribute.md 2015-11-17 11:17:16 +01:00
Olivier Lambert
6a595bffbb Update SUMMARY.md 2015-11-17 11:17:09 +01:00
Olivier Lambert
e9c667f1e9 Update troubleshooting.md 2015-11-16 17:46:43 +01:00
Olivier Lambert
9bbbc94dfc Update troubleshooting.md 2015-11-16 17:41:46 +01:00
Olivier Lambert
a61f6504ab Update troubleshooting.md 2015-11-16 17:40:29 +01:00
Olivier Lambert
7a2a409a11 Update full_backups.md 2015-11-16 16:04:34 +01:00
Olivier Lambert
5bfade48dc Update administration.md 2015-11-16 14:25:02 +01:00
Julien Fontanet
5c32b364f2 Minor update in contributing. 2015-11-16 10:54:41 +01:00
Olivier Lambert
cbb00668d9 Update troubleshooting.md 2015-11-15 23:37:41 +01:00
Olivier Lambert
ef729a907a Update troubleshooting.md 2015-11-15 23:36:32 +01:00
Olivier Lambert
92754242b6 Update troubleshooting.md 2015-11-15 21:24:51 +01:00
Olivier Lambert
3149fa7315 Update troubleshooting.md 2015-11-15 21:21:46 +01:00
Olivier Lambert
75de33bf7a Update SUMMARY.md 2015-11-15 20:37:05 +01:00
Olivier Lambert
e4e3111ed2 Create troubleshooting.md 2015-11-15 20:37:03 +01:00
Olivier Lambert
d501217dc7 Update SUMMARY.md 2015-11-15 20:36:59 +01:00
Olivier Lambert
9dd803290f Update administration.md 2015-11-13 21:48:28 +01:00
Olivier Lambert
da23a92ca8 Update rolling_snapshots.md 2015-11-13 18:49:12 +01:00
Olivier Lambert
643d61bad0 Update SUMMARY.md 2015-11-13 18:48:57 +01:00
Olivier Lambert
1fce46471b Create rolling_snapshots.md 2015-11-13 18:48:55 +01:00
Olivier Lambert
ca98a8ecc2 Update backups.md 2015-11-13 18:48:51 +01:00
Olivier Lambert
0c7d93f88b Update full_backups.md 2015-11-13 18:48:37 +01:00
Olivier Lambert
136f69fe28 Update backups.md 2015-11-13 18:48:07 +01:00
Olivier Lambert
3c10cfd594 Update SUMMARY.md 2015-11-13 18:48:06 +01:00
Olivier Lambert
8d09e6d0e6 Create full_backups.md 2015-11-13 18:48:03 +01:00
Olivier Lambert
acb3448358 Update SUMMARY.md 2015-11-13 18:47:12 +01:00
Olivier Lambert
67a1cb9d1a Update SUMMARY.md 2015-11-13 18:46:55 +01:00
Olivier Lambert
8d81266e72 Update backups.md 2015-11-13 18:40:49 +01:00
Olivier Lambert
8864353f5a Update logs.md 2015-11-13 18:37:58 +01:00
Olivier Lambert
579dfbe5c9 Update SUMMARY.md 2015-11-13 18:34:17 +01:00
Olivier Lambert
6256227922 Create logs.md 2015-11-13 18:34:14 +01:00
Olivier Lambert
978d1c7a61 Update SUMMARY.md 2015-11-13 18:34:06 +01:00
Olivier Lambert
47f5b04ed8 Update backups.md 2015-11-13 17:48:37 +01:00
Olivier Lambert
27a22e10ab Update backups.md 2015-11-13 17:48:25 +01:00
Olivier Lambert
0ebffa1e63 Update self_service.md 2015-11-13 15:42:30 +01:00
Olivier Lambert
d3eeb05cbc Update updater.md 2015-11-13 12:36:36 +01:00
Olivier Lambert
a263663312 Update backups.md 2015-11-13 11:27:00 +01:00
Olivier Lambert
330794b27b Update updater.md 2015-11-13 11:25:45 +01:00
Olivier Lambert
8ec6684000 Create refreshupdater.png 2015-11-13 11:25:05 +01:00
Olivier Lambert
0b40b77802 Update administration.md 2015-11-12 22:15:57 +01:00
Olivier Lambert
cea08dba5a Update load_balancing.md 2015-11-12 19:57:14 +01:00
Olivier Lambert
64c0ff1e39 Create loadbalancer.jpg 2015-11-12 19:54:01 +01:00
Olivier Lambert
2070c663e0 Update roadmap.md 2015-11-12 17:29:24 +01:00
Olivier Lambert
73c84bfb2a Update alerts.md 2015-11-12 17:23:19 +01:00
Olivier Lambert
b4d1dd7f49 Update alerts.md 2015-11-12 17:22:13 +01:00
Olivier Lambert
029c854003 Update alerts.md 2015-11-12 17:20:43 +01:00
Olivier Lambert
aad8999275 Update SUMMARY.md 2015-11-12 17:13:53 +01:00
Olivier Lambert
87a621288d Create alerts.md 2015-11-12 17:13:52 +01:00
Olivier Lambert
2f9ae7e3b1 Update SUMMARY.md 2015-11-12 17:13:47 +01:00
Olivier Lambert
2d2eee4a4c Update SUMMARY.md 2015-11-12 17:13:20 +01:00
Olivier Lambert
7569bb4cca Update scheduler.md 2015-11-12 17:09:55 +01:00
Olivier Lambert
e4090ac84b Update SUMMARY.md 2015-11-12 17:09:47 +01:00
Olivier Lambert
b34554a2d4 Update scheduler.md 2015-11-12 16:30:11 +01:00
Olivier Lambert
0d16963705 Update updater.md 2015-11-12 16:29:07 +01:00
Olivier Lambert
c1c459e4fc Update updater.md 2015-11-12 15:46:57 +01:00
Olivier Lambert
739d13fb04 Create regproxy.png 2015-11-12 15:37:53 +01:00
Olivier Lambert
e74d613808 Create regupdate.png 2015-11-12 15:36:13 +01:00
Olivier Lambert
117d5e0796 Update updater.md 2015-11-12 15:03:28 +01:00
Olivier Lambert
4ccc89098e Create updater_reg2.png 2015-11-12 14:57:13 +01:00
Olivier Lambert
4455b128a9 Create updater_reg.png 2015-11-12 14:57:12 +01:00
Olivier Lambert
c72063eee5 Create updater_notreg.png 2015-11-12 14:55:48 +01:00
Olivier Lambert
a96965c1b9 Update SUMMARY.md 2015-11-12 14:35:17 +01:00
Olivier Lambert
1b08d32314 Create updater.md 2015-11-12 14:35:16 +01:00
Olivier Lambert
9df6f3e28a Update SUMMARY.md 2015-11-12 14:35:12 +01:00
Olivier Lambert
296b4a8ce5 Update SUMMARY.md 2015-11-12 14:35:07 +01:00
Olivier Lambert
aad5fa8786 Update load_balancing.md 2015-11-12 12:10:37 +01:00
Olivier Lambert
c159448710 Update administration.md 2015-11-12 11:22:58 +01:00
Olivier Lambert
d6d5d2420a Update README.md 2015-11-11 20:18:52 +01:00
Olivier Lambert
187e7db6d2 Update architecture.md 2015-11-11 20:16:54 +01:00
Olivier Lambert
66fd334d8b Update README.md 2015-11-11 20:16:14 +01:00
Olivier Lambert
ca840a67e5 Create cover.jpg 2015-11-11 20:03:42 +01:00
Olivier Lambert
9efda9be12 Delete cover.jpg 2015-11-11 20:03:36 +01:00
Olivier Lambert
be818f184e Update roadmap.md 2015-11-11 20:03:06 +01:00
Olivier Lambert
b3cf525630 Update roadmap.md 2015-11-11 20:00:08 +01:00
Olivier Lambert
b1b5b4d304 Update SUMMARY.md 2015-11-11 19:57:55 +01:00
Olivier Lambert
4686c78ab3 Create roadmap.md 2015-11-11 19:57:54 +01:00
Olivier Lambert
9b7631e3c4 Delete roadmap.md 2015-11-11 19:57:51 +01:00
Olivier Lambert
f1a68fa299 Update SUMMARY.md 2015-11-11 19:57:14 +01:00
Olivier Lambert
e1a7352540 Update SUMMARY.md 2015-11-11 19:57:10 +01:00
Olivier Lambert
db58260f1a Update SUMMARY.md 2015-11-11 19:57:07 +01:00
Olivier Lambert
b89102da3e Update SUMMARY.md 2015-11-11 19:57:03 +01:00
Olivier Lambert
a56730468d Update SUMMARY.md 2015-11-11 19:56:55 +01:00
Olivier Lambert
f1b7c35f4c Update SUMMARY.md 2015-11-11 19:56:49 +01:00
Olivier Lambert
81215139d2 Update SUMMARY.md 2015-11-11 19:56:39 +01:00
Olivier Lambert
05b1d54fe0 Create cover.jpg 2015-11-11 19:56:08 +01:00
Olivier Lambert
5f69fdd67e Delete cover.jpg 2015-11-11 19:55:27 +01:00
Olivier Lambert
dd1e8b59aa Create cover.jpg 2015-11-11 19:53:28 +01:00
Olivier Lambert
9703ba0bd9 Delete cover.jpg 2015-11-11 19:53:22 +01:00
Olivier Lambert
9f66d28a3e Create cover.jpg 2015-11-11 19:51:23 +01:00
Olivier Lambert
e1df5b6ed6 Delete cover.jpg 2015-11-11 19:51:18 +01:00
Olivier Lambert
4fc3e34eb6 Create cover.jpg 2015-11-11 19:49:19 +01:00
Olivier Lambert
f77a4ff0b2 Delete cover.jpg 2015-11-11 19:49:13 +01:00
Olivier Lambert
23d859938a Update self_service.md 2015-11-11 19:44:56 +01:00
Olivier Lambert
63548bea00 Update forecaster.md 2015-11-11 19:44:21 +01:00
Olivier Lambert
ea65148af5 Update scheduler.md 2015-11-11 19:43:14 +01:00
Olivier Lambert
251b2c7065 Update load_balancing.md 2015-11-11 19:43:02 +01:00
Olivier Lambert
3d86d7f8b9 Update auto_scalability.md 2015-11-11 19:42:50 +01:00
Olivier Lambert
1b6a4bf31e Update forecaster.md 2015-11-11 19:42:12 +01:00
Olivier Lambert
05e1a1192a Update SUMMARY.md 2015-11-11 19:38:03 +01:00
Olivier Lambert
3a8e1c613d Create forecaster.md 2015-11-11 19:38:02 +01:00
Olivier Lambert
b67c3a62a4 Update SUMMARY.md 2015-11-11 19:37:59 +01:00
Olivier Lambert
3232743319 Update load_balancing.md 2015-11-11 19:36:25 +01:00
Olivier Lambert
7ea80d5b8f Update auto_scalability.md 2015-11-11 19:33:26 +01:00
Olivier Lambert
46266cdb0e Update SUMMARY.md 2015-11-11 19:31:24 +01:00
Olivier Lambert
3ac5002791 Create auto_scalability.md 2015-11-11 19:31:22 +01:00
Olivier Lambert
b2b1d33a8c Update SUMMARY.md 2015-11-11 19:31:19 +01:00
Olivier Lambert
1265fea287 Update SUMMARY.md 2015-11-11 19:31:16 +01:00
Olivier Lambert
c372ecde65 Update SUMMARY.md 2015-11-11 19:31:11 +01:00
Olivier Lambert
eeaa441bef Update SUMMARY.md 2015-11-11 19:31:06 +01:00
Olivier Lambert
4e977562f1 Update load_balancing.md 2015-11-11 19:28:52 +01:00
Olivier Lambert
7d7050da5d Update load_balancing.md 2015-11-11 19:27:07 +01:00
Olivier Lambert
f7d6020389 Update load_balancing.md 2015-11-11 19:24:59 +01:00
Olivier Lambert
c5be0f5234 Update SUMMARY.md 2015-11-11 19:20:43 +01:00
Olivier Lambert
e11ff2ddd4 Create load_balancing.md 2015-11-11 19:20:42 +01:00
Olivier Lambert
ee950bba1e Update scheduler.md 2015-11-11 19:20:38 +01:00
Olivier Lambert
d2c69e8e11 Update SUMMARY.md 2015-11-11 19:14:21 +01:00
Olivier Lambert
375b1dcb68 Create scheduler.md 2015-11-11 19:14:20 +01:00
Olivier Lambert
3da04fa93a Update self_service.md 2015-11-11 19:14:10 +01:00
Olivier Lambert
4560b1a302 Update self_service.md 2015-11-11 19:14:01 +01:00
Olivier Lambert
dadec0b012 Update self_service.md 2015-11-11 19:09:18 +01:00
Olivier Lambert
cf7f65dc6e Update SUMMARY.md 2015-11-11 19:04:35 +01:00
Olivier Lambert
4956ec2cda Create self_service.md 2015-11-11 19:04:33 +01:00
Olivier Lambert
bba3f1e7b5 Update SUMMARY.md 2015-11-11 19:04:14 +01:00
Olivier Lambert
4795848566 Update SUMMARY.md 2015-11-11 19:04:10 +01:00
Olivier Lambert
672b10a953 Update trial_activation.md 2015-11-11 19:03:24 +01:00
Olivier Lambert
28b0f7a183 Update trial_activation.md 2015-11-11 19:02:58 +01:00
Olivier Lambert
a621240c1f Update visualizations.md 2015-11-11 19:00:59 +01:00
Olivier Lambert
5ee9de601e Update acls.md 2015-11-11 19:00:44 +01:00
Olivier Lambert
a15017de97 Update SUMMARY.md 2015-11-11 19:00:30 +01:00
Olivier Lambert
9085f861ee Create acls.md 2015-11-11 19:00:28 +01:00
Olivier Lambert
4791137a31 Update resources_delegation.md 2015-11-11 19:00:26 +01:00
Olivier Lambert
5a8cf21e69 Update SUMMARY.md 2015-11-11 19:00:10 +01:00
Olivier Lambert
f9ee192038 Update resources_delegation.md 2015-11-11 18:58:55 +01:00
Olivier Lambert
96f0f3af27 Update resources_delegation.md 2015-11-11 18:56:37 +01:00
Olivier Lambert
b66218302d Update resources_delegation.md 2015-11-11 18:56:22 +01:00
Olivier Lambert
a9cc6a3179 Update resources_delegation.md 2015-11-11 18:52:18 +01:00
Olivier Lambert
4619a044bb Create acllist.png 2015-11-11 18:40:11 +01:00
Olivier Lambert
b3d7219b11 Create createacl.png 2015-11-11 18:39:26 +01:00
Olivier Lambert
54cad25e87 Create groups.png 2015-11-11 18:36:42 +01:00
Olivier Lambert
25e5fee4e8 Update resources_delegation.md 2015-11-11 18:36:13 +01:00
Olivier Lambert
8b6696bf7b Update administration.md 2015-11-11 18:33:50 +01:00
Olivier Lambert
df3ed64dc4 Update administration.md 2015-11-11 18:32:53 +01:00
Olivier Lambert
08833c4a35 Update administration.md 2015-11-11 18:32:46 +01:00
Olivier Lambert
850e3260ba Update built-in.md 2015-11-11 18:30:08 +01:00
Olivier Lambert
ed26decd58 Create usercreation.png 2015-11-11 18:28:34 +01:00
Olivier Lambert
db86bff8e6 Update google.md 2015-11-11 18:10:54 +01:00
Olivier Lambert
466fe9b7bb Create googleconfig.png 2015-11-11 18:10:14 +01:00
Olivier Lambert
d4de92ddc7 Update github.md 2015-11-11 18:09:42 +01:00
Olivier Lambert
0847fa35c1 Create githubconfig.png 2015-11-11 18:09:13 +01:00
Olivier Lambert
7c80281ce2 Update ldap.md 2015-11-11 18:08:33 +01:00
Olivier Lambert
cf2d57809c Update saml.md 2015-11-11 18:08:14 +01:00
Olivier Lambert
4e99177686 Create samlconfig.png 2015-11-11 18:07:52 +01:00
Olivier Lambert
8d8401251f Update ldap.md 2015-11-11 18:06:09 +01:00
Olivier Lambert
7936381467 Create ldapconfig.png 2015-11-11 18:04:59 +01:00
Olivier Lambert
49f418c795 Update authentication.md 2015-11-11 17:39:19 +01:00
Olivier Lambert
5bc100ea76 Update authentication.md 2015-11-11 17:39:08 +01:00
Olivier Lambert
f7d35eb206 Update ldap.md 2015-11-11 17:38:18 +01:00
Olivier Lambert
b50b2c9673 Update authentication.md 2015-11-11 17:36:24 +01:00
Olivier Lambert
177fc6a406 Update SUMMARY.md 2015-11-11 17:35:15 +01:00
Olivier Lambert
1f64537225 Update SUMMARY.md 2015-11-11 17:35:04 +01:00
Olivier Lambert
67ae93831e Update SUMMARY.md 2015-11-11 17:34:58 +01:00
Olivier Lambert
1922d35ce9 Update resources_delegation.md 2015-11-11 15:31:26 +01:00
Olivier Lambert
7058ab2052 Delete external_authentication.md 2015-11-11 15:27:37 +01:00
Olivier Lambert
e4f42601ea Update authentication.md 2015-11-11 15:27:21 +01:00
Olivier Lambert
dec031469a Create authentication.md 2015-11-11 15:27:14 +01:00
Olivier Lambert
f292bd8ab0 Update SUMMARY.md 2015-11-11 15:27:03 +01:00
Olivier Lambert
12a269ed75 Update configuration.md 2015-11-11 15:26:46 +01:00
Olivier Lambert
6fc1fb0a9e Update configuration.md 2015-11-11 15:25:50 +01:00
Olivier Lambert
5fcc4928e8 Update configuration.md 2015-11-11 15:25:04 +01:00
Olivier Lambert
d6fd53875e Update from_the_sources.md 2015-11-11 15:24:28 +01:00
Olivier Lambert
03e890359b Update from_the_sources.md 2015-11-11 15:22:20 +01:00
Olivier Lambert
bb877fcee4 Update from_the_sources.md 2015-11-11 15:20:09 +01:00
Olivier Lambert
ec26374ae9 Update from_the_sources.md 2015-11-11 15:20:01 +01:00
Olivier Lambert
1d03334180 Update installation.md 2015-11-11 15:17:35 +01:00
Olivier Lambert
0499b7d385 Update google.md 2015-11-11 15:15:57 +01:00
Olivier Lambert
1fc52d83b4 Update saml.md 2015-11-11 15:14:53 +01:00
Olivier Lambert
8025af6a41 Update saml.md 2015-11-11 15:11:51 +01:00
Olivier Lambert
4d4f1f1476 Update SUMMARY.md 2015-11-11 15:11:28 +01:00
Olivier Lambert
b6bf6bce7c Create saml.md 2015-11-11 15:11:26 +01:00
Olivier Lambert
a292b28a23 Update SUMMARY.md 2015-11-11 15:11:20 +01:00
Olivier Lambert
078d784645 Update google.md 2015-11-11 15:09:47 +01:00
Olivier Lambert
f4463410fc Update github.md 2015-11-11 15:08:25 +01:00
Olivier Lambert
661f5d2d1b Update google.md 2015-11-11 15:07:42 +01:00
Olivier Lambert
b8e07b8bcf Update google.md 2015-11-11 15:07:08 +01:00
Olivier Lambert
5817b48da3 Update google.md 2015-11-11 15:05:15 +01:00
Olivier Lambert
0a4ad93156 Update google.md 2015-11-11 15:02:54 +01:00
Olivier Lambert
cb37849bec Update SUMMARY.md 2015-11-11 15:01:09 +01:00
Olivier Lambert
3a8707f6c1 Create google.md 2015-11-11 15:01:07 +01:00
Olivier Lambert
3574e41133 Update SUMMARY.md 2015-11-11 15:01:02 +01:00
Olivier Lambert
43bcc52ff0 Update built-in.md 2015-11-11 15:00:39 +01:00
Olivier Lambert
d63142d209 Update external_authentication.md 2015-11-11 15:00:19 +01:00
Olivier Lambert
38d7735014 Update SUMMARY.md 2015-11-11 15:00:04 +01:00
Olivier Lambert
d5889c90f5 Create built-in.md 2015-11-11 15:00:02 +01:00
Olivier Lambert
4b4e7a89d3 Update SUMMARY.md 2015-11-11 14:59:56 +01:00
Olivier Lambert
905d6bc9af Update github.md 2015-11-11 14:58:42 +01:00
Olivier Lambert
000cc244e0 Update github.md 2015-11-11 14:57:27 +01:00
Olivier Lambert
e8948dd4f5 Update github.md 2015-11-11 14:56:59 +01:00
Olivier Lambert
05613baad6 Update SUMMARY.md 2015-11-11 14:54:20 +01:00
Olivier Lambert
2a5526fc31 Create github.md 2015-11-11 14:54:18 +01:00
Olivier Lambert
95a61af91d Update external_authentication.md 2015-11-11 14:54:15 +01:00
Olivier Lambert
cc2b7a4748 Update ldap.md 2015-11-11 14:54:00 +01:00
Olivier Lambert
7f93ae3354 Update SUMMARY.md 2015-11-11 14:53:42 +01:00
Olivier Lambert
1d5ed7d1c8 Create ldap.md 2015-11-11 14:53:41 +01:00
Olivier Lambert
ce29157fb8 Update external_authentication.md 2015-11-11 14:53:38 +01:00
Olivier Lambert
339cb25d7c Update SUMMARY.md 2015-11-11 14:53:20 +01:00
Olivier Lambert
611cd2c638 Update SUMMARY.md 2015-11-11 14:53:11 +01:00
Olivier Lambert
751f4f7c40 Update external_authentication.md 2015-11-11 14:52:57 +01:00
Olivier Lambert
dc85ea7408 Update external_authentication.md 2015-11-11 14:45:24 +01:00
Olivier Lambert
bd08a6e73f Update external_authentication.md 2015-11-11 14:44:59 +01:00
Olivier Lambert
205f8384dd Update external_authentication.md 2015-11-11 14:44:42 +01:00
Olivier Lambert
07ff90d387 Update external_authentication.md 2015-11-11 14:40:09 +01:00
Olivier Lambert
afc561013b Update external_authentication.md 2015-11-11 14:39:22 +01:00
Olivier Lambert
d3f274fe27 Update resources_delegation.md 2015-11-11 14:38:45 +01:00
Olivier Lambert
59628f0f3b Update external_authentication.md 2015-11-11 14:38:31 +01:00
Olivier Lambert
0c95559d82 Update external_authentication.md 2015-11-11 14:37:55 +01:00
Olivier Lambert
ed80e9b6a4 Update external_authentication.md 2015-11-11 14:37:50 +01:00
Olivier Lambert
2c56711551 Update external_authentication.md 2015-11-11 14:36:39 +01:00
Olivier Lambert
d6f4f618f9 Update external_authentication.md 2015-11-11 14:34:00 +01:00
Olivier Lambert
0b7adf8e28 Update external_authentication.md 2015-11-11 14:32:31 +01:00
Olivier Lambert
794efb3af8 Update external_authentication.md 2015-11-11 14:25:33 +01:00
Olivier Lambert
73aebe0bd2 Update external_authentication.md 2015-11-11 14:22:39 +01:00
Olivier Lambert
33f32df33f Update SUMMARY.md 2015-11-11 14:19:09 +01:00
Olivier Lambert
278c79d6fa Update external_authentication.md 2015-11-11 14:19:00 +01:00
Olivier Lambert
2982aa7770 Update external_authentication.md 2015-11-11 14:10:29 +01:00
Olivier Lambert
42c0035e04 Update resources_delegation.md 2015-11-11 14:09:22 +01:00
Olivier Lambert
445f588913 Update SUMMARY.md 2015-11-11 14:09:21 +01:00
Olivier Lambert
91a58e5a2e Create external_authentication.md 2015-11-11 14:09:19 +01:00
Olivier Lambert
92aa05154c Update SUMMARY.md 2015-11-11 14:09:11 +01:00
Olivier Lambert
301124f1c0 Update resources_delegation.md 2015-11-11 14:07:23 +01:00
Olivier Lambert
add2c92940 Update disaster_recovery.md 2015-11-11 14:04:12 +01:00
Olivier Lambert
e463424ee4 Update disaster_recovery.md 2015-11-11 14:03:32 +01:00
Olivier Lambert
7c5a530eb0 Update disaster_recovery.md 2015-11-11 14:03:16 +01:00
Olivier Lambert
dd13ad657d Update disaster_recovery.md 2015-11-11 14:02:59 +01:00
Olivier Lambert
64d379f1d6 Update disaster_recovery.md 2015-11-11 14:02:00 +01:00
Olivier Lambert
16e920ee84 Update backups.md 2015-11-11 14:01:32 +01:00
Olivier Lambert
b9d3e1dab6 Update administration.md 2015-11-11 14:00:33 +01:00
Olivier Lambert
086519367d Update administration.md 2015-11-11 13:58:15 +01:00
Olivier Lambert
bf40c52e7e Update administration.md 2015-11-11 13:57:14 +01:00
Olivier Lambert
2e730b7623 Update administration.md 2015-11-11 13:56:42 +01:00
Olivier Lambert
290694314f Update administration.md 2015-11-11 13:56:15 +01:00
Olivier Lambert
3d52939547 Update administration.md 2015-11-11 13:56:07 +01:00
Olivier Lambert
3e8a692373 Update administration.md 2015-11-11 13:54:49 +01:00
Olivier Lambert
2f95e5426e Update administration.md 2015-11-11 13:54:38 +01:00
Olivier Lambert
7dd4ce4e7e Update administration.md 2015-11-11 13:52:44 +01:00
Olivier Lambert
88c58f44f5 Update features.md 2015-11-11 13:49:41 +01:00
Olivier Lambert
52d5678c5d Update architecture.md 2015-11-11 13:49:00 +01:00
Olivier Lambert
6f24cd1a73 Update others.md 2015-11-11 13:48:33 +01:00
Olivier Lambert
64a1f19e19 Update architecture.md 2015-11-11 13:45:14 +01:00
Olivier Lambert
41055b8cac Create cover.jpg 2015-11-11 13:42:50 +01:00
Olivier Lambert
6ad702ea2d Update visualizations.md 2015-11-10 16:33:06 +01:00
Olivier Lambert
0500943dd6 Update visualizations.md 2015-11-10 16:30:18 +01:00
Olivier Lambert
65619522a6 Update visualizations.md 2015-11-10 16:18:50 +01:00
Olivier Lambert
526ec2dfec Update backups.md 2015-11-10 16:11:51 +01:00
Olivier Lambert
e72f20e738 Update backups.md 2015-11-10 16:09:39 +01:00
Olivier Lambert
9b2b98e9ce Update disaster_recovery.md 2015-11-10 15:56:27 +01:00
Olivier Lambert
382bfaa035 Update disaster_recovery.md 2015-11-10 15:55:05 +01:00
Olivier Lambert
85d5df05f9 Update disaster_recovery.md 2015-11-10 15:54:31 +01:00
Olivier Lambert
e2725ce23e Update resources_delegation.md 2015-11-10 15:48:44 +01:00
Olivier Lambert
784622142f Update resources_delegation.md 2015-11-10 15:43:18 +01:00
Olivier Lambert
54209c1613 Update disaster_recovery.md 2015-11-10 15:38:54 +01:00
Olivier Lambert
db73e3f007 Update disaster_recovery.md 2015-11-10 15:38:01 +01:00
Olivier Lambert
44a5d37f14 Update others.md 2015-11-10 15:32:28 +01:00
Olivier Lambert
ee44cea02e Update others.md 2015-11-10 15:32:19 +01:00
Olivier Lambert
950ae76120 Update xoa.md 2015-11-10 15:30:35 +01:00
Olivier Lambert
0e686b5bb1 Update xoa.md 2015-11-10 15:30:25 +01:00
Olivier Lambert
0b2b88b553 Update xoa.md 2015-11-10 15:30:20 +01:00
Olivier Lambert
09f7a90491 Update xoa.md 2015-11-10 15:29:57 +01:00
Olivier Lambert
07cedb8a22 Update from_the_sources.md 2015-11-10 15:25:51 +01:00
Olivier Lambert
cd8d899fb5 Update features.md 2015-11-10 15:22:44 +01:00
Olivier Lambert
3c1f6075fe Update SUMMARY.md 2015-11-10 15:22:24 +01:00
Olivier Lambert
13847834e3 Update SUMMARY.md 2015-11-10 15:22:17 +01:00
Olivier Lambert
6deace2b7a Update features.md 2015-11-10 15:21:08 +01:00
Olivier Lambert
5d056dcf2d Update features.md 2015-11-10 15:20:27 +01:00
Olivier Lambert
4aa0fb6dfa Update xo-web.md 2015-11-10 15:18:52 +01:00
Olivier Lambert
bd0bbed7a1 Update xo-web.md 2015-11-10 15:17:42 +01:00
Olivier Lambert
62c6ebf8ce Update xo-cli.md 2015-11-10 15:15:54 +01:00
Olivier Lambert
e5c549c93c Update xo-cli.md 2015-11-10 15:08:21 +01:00
Olivier Lambert
8b8b5f14e6 Update xo-server.md 2015-11-10 15:06:06 +01:00
Olivier Lambert
8b8c1aa6b4 Update backups.md 2015-11-10 15:02:07 +01:00
Olivier Lambert
bd722e8702 Update backups.md 2015-11-10 15:01:17 +01:00
Olivier Lambert
ae09695687 Update backups.md 2015-11-10 15:01:01 +01:00
Olivier Lambert
87b743010c Update backups.md 2015-11-10 15:00:43 +01:00
Olivier Lambert
5424c35ec5 Create backups.md 2015-11-10 15:00:12 +01:00
Olivier Lambert
f03b671cbc Update disaster_recovery.md 2015-11-10 14:59:36 +01:00
Olivier Lambert
d347f9acbb Update disaster_recovery.md 2015-11-10 14:57:57 +01:00
Olivier Lambert
53d4d91521 Update disaster_recovery.md 2015-11-10 14:54:42 +01:00
Olivier Lambert
9b12772843 Update disaster_recovery.md 2015-11-10 14:49:55 +01:00
Olivier Lambert
846a33fe4a Update SUMMARY.md 2015-11-10 14:46:12 +01:00
Olivier Lambert
e2ae89c0a2 Create disaster_recovery.md 2015-11-10 14:46:10 +01:00
Olivier Lambert
2a599da33e Update backups_and_disaster_recovery.md 2015-11-10 14:46:06 +01:00
Olivier Lambert
c04c93d499 Update SUMMARY.md 2015-11-10 14:46:00 +01:00
Olivier Lambert
5a615ab619 Update SUMMARY.md 2015-11-10 14:45:49 +01:00
Olivier Lambert
81638a1857 Update SUMMARY.md 2015-11-10 14:45:43 +01:00
Olivier Lambert
b7baf37cd8 Update backups_and_disaster_recovery.md 2015-11-10 14:45:09 +01:00
Olivier Lambert
fa39a9be3b Update backups_and_disaster_recovery.md 2015-11-10 14:38:55 +01:00
Olivier Lambert
68c2b8728c Update backups_and_disaster_recovery.md 2015-11-10 14:38:31 +01:00
Olivier Lambert
1bc0054344 Update backups_and_disaster_recovery.md 2015-11-10 14:37:02 +01:00
Olivier Lambert
7f16b6fa1a Update features.md 2015-11-10 14:22:01 +01:00
Olivier Lambert
edd76774ed Update visualizations.md 2015-11-10 14:20:18 +01:00
Olivier Lambert
8873da1ba0 Update SUMMARY.md 2015-11-10 14:20:13 +01:00
Olivier Lambert
7481a410f8 Create visualizations.md 2015-11-10 14:20:11 +01:00
Olivier Lambert
5acf3b53fa Update features.md 2015-11-10 14:20:09 +01:00
Olivier Lambert
2d93f3552a Update resources_delegation.md 2015-11-10 14:19:51 +01:00
Olivier Lambert
dd7f01ddd6 Update SUMMARY.md 2015-11-10 14:19:38 +01:00
Olivier Lambert
745f6a842f Create resources_delegation.md 2015-11-10 14:19:36 +01:00
Olivier Lambert
b089bedf9c Update features.md 2015-11-10 14:19:33 +01:00
Olivier Lambert
994d3064f7 Update backups_and_disaster_recovery.md 2015-11-10 14:18:58 +01:00
Olivier Lambert
996308b0c3 Update SUMMARY.md 2015-11-10 14:18:52 +01:00
Olivier Lambert
4cb62a94e6 Create backups_and_disaster_recovery.md 2015-11-10 14:18:50 +01:00
Olivier Lambert
982fdcb596 Update features.md 2015-11-10 14:18:47 +01:00
Olivier Lambert
5478e1b4ed Update SUMMARY.md 2015-11-10 14:18:27 +01:00
Olivier Lambert
53b46d22b1 Update SUMMARY.md 2015-11-10 14:18:22 +01:00
Olivier Lambert
a06bac9851 Update SUMMARY.md 2015-11-10 14:18:13 +01:00
Olivier Lambert
f1b0c1624a Update SUMMARY.md 2015-11-10 14:18:06 +01:00
Olivier Lambert
422deaa4ff Update SUMMARY.md 2015-11-10 14:17:51 +01:00
Olivier Lambert
cc02a1d22b Update administration.md 2015-11-10 14:17:35 +01:00
Olivier Lambert
a6f075d815 Update features.md 2015-11-10 14:17:24 +01:00
Olivier Lambert
fa3e7e77fe Update SUMMARY.md 2015-11-10 14:17:04 +01:00
Olivier Lambert
28dffdb8cb Create administration.md 2015-11-10 14:17:01 +01:00
Olivier Lambert
03a1b2e150 Update SUMMARY.md 2015-11-10 14:16:55 +01:00
Olivier Lambert
0db4cd2bf0 Update architecture.md 2015-11-10 14:16:04 +01:00
Olivier Lambert
49cf452fd7 Update others.md 2015-11-10 14:15:38 +01:00
Olivier Lambert
4d1da86d47 Update SUMMARY.md 2015-11-10 14:15:32 +01:00
Olivier Lambert
78f81ac4d5 Create others.md 2015-11-10 14:15:30 +01:00
Olivier Lambert
cc4920a0be Update xo-cli.md 2015-11-10 14:15:28 +01:00
Olivier Lambert
f7d336248a Update SUMMARY.md 2015-11-10 14:15:23 +01:00
Olivier Lambert
132424cae7 Update xo-web.md 2015-11-10 14:14:59 +01:00
Olivier Lambert
b4a58c08d3 Update SUMMARY.md 2015-11-10 14:14:57 +01:00
Olivier Lambert
cb55e18a60 Create xo-cli.md 2015-11-10 14:14:55 +01:00
Olivier Lambert
7eb95a982e Update SUMMARY.md 2015-11-10 14:14:50 +01:00
Olivier Lambert
57a0dd788c Update SUMMARY.md 2015-11-10 14:14:45 +01:00
Olivier Lambert
38720f5550 Update SUMMARY.md 2015-11-10 14:14:37 +01:00
Olivier Lambert
903eef70a7 Update SUMMARY.md 2015-11-10 14:14:28 +01:00
Olivier Lambert
698c4e92b2 Update SUMMARY.md 2015-11-10 14:12:58 +01:00
Olivier Lambert
24a39893e6 Create xo-web.md 2015-11-10 14:12:56 +01:00
Olivier Lambert
f2f356157c Update architecture.md 2015-11-10 14:12:54 +01:00
Olivier Lambert
ef1b71d7d0 Update xo-server.md 2015-11-10 14:12:20 +01:00
Olivier Lambert
e4c08c7b9b Update SUMMARY.md 2015-11-10 14:12:05 +01:00
Olivier Lambert
b137db506f Create xo-server.md 2015-11-10 14:12:03 +01:00
Olivier Lambert
90165c24ba Update architecture.md 2015-11-10 14:12:01 +01:00
Olivier Lambert
0a88403329 Update SUMMARY.md 2015-11-10 14:11:41 +01:00
Olivier Lambert
f69aec2c00 Update SUMMARY.md 2015-11-10 14:11:32 +01:00
Olivier Lambert
9d6e567937 Update from_the_sources.md 2015-11-10 14:03:52 +01:00
Olivier Lambert
a672e59a95 Update SUMMARY.md 2015-11-10 14:03:27 +01:00
Olivier Lambert
37efdf0122 Create from_the_sources.md 2015-11-10 14:03:26 +01:00
Olivier Lambert
7da4b53df7 Update installation.md 2015-11-10 14:03:24 +01:00
Olivier Lambert
7ec8185eef Update SUMMARY.md 2015-11-10 14:03:15 +01:00
Olivier Lambert
fabb4aa0d9 Update xoa.md 2015-11-10 14:03:06 +01:00
Olivier Lambert
7ce2b30cb2 Update SUMMARY.md 2015-11-10 14:02:58 +01:00
Olivier Lambert
72792890e7 Create xoa.md 2015-11-10 14:02:56 +01:00
Olivier Lambert
7788435903 Update installation.md 2015-11-10 14:02:54 +01:00
Olivier Lambert
1d65901641 Update SUMMARY.md 2015-11-10 14:02:13 +01:00
Olivier Lambert
ef32128612 Update reverse_proxy.md 2015-11-10 14:01:51 +01:00
Olivier Lambert
192aa2077b Update recipes.md 2015-11-10 14:01:41 +01:00
Olivier Lambert
2184f0cbb6 Update SUMMARY.md 2015-11-10 14:01:21 +01:00
Olivier Lambert
87aa733064 Create reverse_proxy.md 2015-11-10 14:01:19 +01:00
Olivier Lambert
501cc9b1fd Update SUMMARY.md 2015-11-10 14:00:58 +01:00
Olivier Lambert
973f15835e Update features.md 2015-11-10 14:00:07 +01:00
Olivier Lambert
715f28b1e5 Update features.md 2015-11-10 13:55:12 +01:00
Olivier Lambert
9792527832 Update configuration.md 2015-11-10 13:52:45 +01:00
Olivier Lambert
2cf0654d11 Update features.md 2015-11-10 13:48:25 +01:00
Olivier Lambert
6e185d9ae5 Update features.md 2015-11-10 13:46:12 +01:00
Olivier Lambert
a165013397 Update features.md 2015-11-10 13:43:31 +01:00
Olivier Lambert
208477b493 Update features.md 2015-11-10 13:42:22 +01:00
Olivier Lambert
b04cabc72e Update features.md 2015-11-10 13:39:54 +01:00
Olivier Lambert
7860d677d3 Update features.md 2015-11-10 13:35:21 +01:00
Olivier Lambert
0d714a753b Update features.md 2015-11-10 13:24:27 +01:00
Olivier Lambert
709f7b0af6 Update features.md 2015-11-10 13:21:26 +01:00
Olivier Lambert
882d6eafb6 Update architecture.md 2015-11-10 13:15:51 +01:00
Olivier Lambert
ce1968a1b6 Update architecture.md 2015-11-10 13:15:48 +01:00
Olivier Lambert
a4f36c7ed4 Update architecture.md 2015-11-10 13:13:51 +01:00
Olivier Lambert
9bac47ce17 Update architecture.md 2015-11-10 13:13:12 +01:00
Olivier Lambert
6fe0203930 Update architecture.md 2015-11-10 13:12:55 +01:00
Olivier Lambert
a2009bba9b Update architecture.md 2015-11-10 13:12:34 +01:00
Olivier Lambert
5ea3fe6dca Update architecture.md 2015-11-10 13:11:43 +01:00
Olivier Lambert
5b915daefe Update features.md 2015-11-10 13:09:05 +01:00
Olivier Lambert
82ea59d9e2 Update SUMMARY.md 2015-11-10 13:06:35 +01:00
Olivier Lambert
3708a7e3a1 Create features.md 2015-11-10 13:06:34 +01:00
Olivier Lambert
ea3fa0a792 Update SUMMARY.md 2015-11-10 13:06:30 +01:00
Olivier Lambert
926f314d9f Update SUMMARY.md 2015-11-10 13:06:20 +01:00
Olivier Lambert
a4f72a6a83 Update SUMMARY.md 2015-11-10 13:06:17 +01:00
Olivier Lambert
f5dbcfd969 Update architecture.md 2015-11-10 13:05:29 +01:00
Olivier Lambert
4671a174d4 Update README.md 2015-11-10 13:01:53 +01:00
Olivier Lambert
6f149cb8cc Update SUMMARY.md 2015-11-10 13:00:59 +01:00
Olivier Lambert
bf4fb18dc3 Delete introduction.md 2015-11-10 13:00:58 +01:00
Olivier Lambert
2a03bbe226 Update roadmap.md 2015-11-10 13:00:09 +01:00
Olivier Lambert
1514072fd5 Update roadmap.md 2015-11-10 12:59:52 +01:00
Olivier Lambert
306a6635d6 Update how_to_contribute.md 2015-11-10 12:11:52 +01:00
Olivier Lambert
980d977f16 Update SUMMARY.md 2015-11-10 12:11:39 +01:00
Olivier Lambert
98c877a107 Create how_to_contribute.md 2015-11-10 12:11:38 +01:00
Olivier Lambert
e91ca7997b Update trial_activation.md 2015-11-10 12:11:30 +01:00
Olivier Lambert
dfa1ea43c2 Update SUMMARY.md 2015-11-10 12:10:38 +01:00
Olivier Lambert
1b50bcab83 Create trial_activation.md 2015-11-10 12:10:36 +01:00
Olivier Lambert
b0afd4cba0 Update recipes.md 2015-11-10 12:10:23 +01:00
Olivier Lambert
33a2f88c39 Update SUMMARY.md 2015-11-10 12:09:03 +01:00
Olivier Lambert
e63307f3a6 Create recipes.md 2015-11-10 12:09:01 +01:00
Olivier Lambert
069e4ef738 Update configuration.md 2015-11-10 12:08:58 +01:00
Olivier Lambert
9c3852082a Update SUMMARY.md 2015-11-10 12:07:01 +01:00
Olivier Lambert
3da4d98340 Create configuration.md 2015-11-10 12:06:59 +01:00
Olivier Lambert
c666fd308f Update SUMMARY.md 2015-11-10 12:06:55 +01:00
Olivier Lambert
9214f93ad1 Update SUMMARY.md 2015-11-10 12:06:49 +01:00
Olivier Lambert
9ef933d4f7 Update SUMMARY.md 2015-11-10 12:06:38 +01:00
Olivier Lambert
dc11c3524c Update SUMMARY.md 2015-11-10 12:06:23 +01:00
Olivier Lambert
7e18d69aa2 Update SUMMARY.md 2015-11-10 12:06:16 +01:00
Olivier Lambert
d29f4bc7e2 Update SUMMARY.md 2015-11-10 12:05:57 +01:00
Olivier Lambert
4b1ddd15b2 Update installation.md 2015-11-10 12:04:49 +01:00
Olivier Lambert
199ea74650 Create book.json 2015-11-10 12:02:25 +01:00
Olivier Lambert
c2a8f6d05b Update installation.md 2015-11-10 11:59:27 +01:00
Olivier Lambert
1fece3047f Update SUMMARY.md 2015-11-10 11:56:17 +01:00
Olivier Lambert
64ada1d3fe Create installation.md 2015-11-10 11:56:15 +01:00
Olivier Lambert
917ec0fd76 Update architecture.md 2015-11-10 11:56:09 +01:00
Olivier Lambert
4603d07e4f Update architecture.md 2015-11-10 11:55:27 +01:00
Olivier Lambert
dc417be1d9 Update architecture.md 2015-11-10 11:53:50 +01:00
Olivier Lambert
e888654085 Update SUMMARY.md 2015-11-10 11:43:39 +01:00
Olivier Lambert
b5775bfb0d Create architecture.md 2015-11-10 11:43:37 +01:00
Olivier Lambert
db6b066b4b Update introduction.md 2015-11-10 11:43:25 +01:00
Olivier Lambert
9e410b8749 Update SUMMARY.md 2015-11-10 11:39:57 +01:00
Olivier Lambert
e7efb0202b Update SUMMARY.md 2015-11-10 11:39:16 +01:00
Olivier Lambert
41abd8cbf2 Update SUMMARY.md 2015-11-10 11:38:13 +01:00
Olivier Lambert
aa6f67b731 Update SUMMARY.md 2015-11-10 11:24:41 +01:00
Olivier Lambert
6923892ae7 Create introduction.md 2015-11-10 11:24:39 +01:00
Olivier Lambert
3f514760f9 Create SUMMARY.md 2015-11-10 11:24:26 +01:00
Julien Fontanet
db56405a9a Minor typos. 2015-11-06 15:11:27 +01:00
Julien Fontanet
4d889d4000 ProxyPass are evaluated in order. 2015-11-05 18:18:15 +01:00
Olivier Lambert
910c3c2398 Update README.md 2015-11-05 18:02:35 +01:00
Julien Fontanet
327d1f8621 Apache HTTP/WebSocket ProxyPass cannot be on same path. 2015-11-05 17:34:19 +01:00
Julien Fontanet
d6c8bcdb9f Fix path in Apache proxy. 2015-11-05 17:25:19 +01:00
Julien Fontanet
c4323eb9fc Fix path support in nginx proxy. 2015-11-05 16:40:43 +01:00
Julien Fontanet
d191892815 Typo. 2015-11-04 09:11:27 +01:00
Julien Fontanet
abd401a327 Various updates in labels. 2015-10-30 16:47:34 +01:00
Julien Fontanet
a269af7029 New issue category: meta. 2015-10-27 10:40:34 +01:00
Julien Fontanet
01556dfadc Remove duplicate line break. 2015-10-14 15:26:26 +02:00
Julien Fontanet
e55377afd1 Use numbered list for severity labels. 2015-10-14 15:26:11 +02:00
Julien Fontanet
801546dc21 New labels group: difficulty. 2015-10-14 15:25:52 +02:00
Julien Fontanet
570f079cdc Documentation on issue labels. 2015-10-14 10:31:59 +02:00
Olivier Lambert
75d7c2cdfb Update contributing.md 2015-10-03 11:42:40 +02:00
Julien Fontanet
ba5851969c PR doc. 2015-09-30 15:44:21 +02:00
Olivier Lambert
939ed0ed87 Update manual_installation.md 2015-09-20 12:06:13 +02:00
Olivier Lambert
39a8df64d0 Update manual_installation.md 2015-09-16 14:28:09 +02:00
Olivier Lambert
47afcb7c20 Update manual_installation.md 2015-09-16 14:27:33 +02:00
Olivier Lambert
b4f609e084 Update README.md
Add chain of certs documentation for HTTPS
2015-09-01 15:30:16 +02:00
Olivier Lambert
b1b26d4a6c Update roadmap.md 2015-07-30 16:34:28 +02:00
Olivier Lambert
e01c20a012 Update roadmap.md 2015-07-23 14:30:49 +02:00
Olivier Lambert
1cc006b89b Update README.md 2015-07-23 14:30:26 +02:00
Olivier Lambert
72b4dccfbe Update roadmap.md 2015-07-23 14:20:32 +02:00
Olivier Lambert
3c79126acf Update roadmap.md 2015-07-23 14:20:18 +02:00
Olivier Lambert
4fb6e32107 Update manual_installation.md 2015-07-07 14:06:10 +02:00
Olivier Lambert
d4aa4b6840 Update xoa_installation.md 2015-06-17 13:59:18 +02:00
Olivier Lambert
2bbf643579 Update README.md 2015-05-26 12:24:26 +02:00
Olivier Lambert
cd340eb294 add trial doc 2015-05-26 12:22:26 +02:00
Olivier Lambert
73af59317b Update roadmap.md 2015-05-26 12:09:32 +02:00
Olivier Lambert
f6d4c61e68 Update roadmap.md 2015-05-26 12:09:23 +02:00
Olivier Lambert
4fcead8540 Update README.md 2015-05-25 21:50:38 +02:00
Olivier Lambert
3d4d961a6d Update README.md 2015-05-25 21:48:55 +02:00
Olivier Lambert
625db08d3f Update manual_installation.md 2015-05-11 22:40:50 +02:00
Olivier Lambert
9e29e3ef7c Update manual_installation.md 2015-05-11 17:04:30 +02:00
Julien Fontanet
e2eb083cf8 Update apache-reverse.md 2015-04-30 18:27:39 +02:00
Olivier Lambert
8120a7ad66 Update README.md 2015-04-28 23:49:36 +02:00
Olivier Lambert
46eeaa28da Update roadmap.md 2015-04-28 17:53:22 +02:00
Olivier Lambert
b1ee1e9376 Update installation_freebsd.md 2015-04-26 13:57:16 +02:00
Julien Fontanet
968735b2a4 Merge pull request #51 from evook/patch-3
Improve manual install doc.
2015-04-23 13:11:46 +02:00
evook
2e64660ff6 Update manual_installation.md
Removed sudo and added the on descriptive line, necessary for all the lazy perm-root admins. 
"use `npm`, as the non-root user owning the fetched code"
2015-04-23 12:20:57 +02:00
evook
adbc9353f5 Update manual_installation.md 2015-04-22 18:19:54 +02:00
Olivier Lambert
df89960182 Update xoa_installation.md 2015-04-21 15:52:45 +02:00
Olivier Lambert
8c903bc951 Update roadmap.md 2015-04-19 14:31:54 +02:00
Olivier Lambert
ff2fe3b8ca Merge pull request #48 from tomneedham/patch-1
Fix command docs for 'xoa-register'
2015-04-19 14:28:06 +02:00
Tom Needham
bbb2e6cd99 Fix command docs for 'xoa-register' 2015-04-19 13:26:50 +01:00
Olivier Lambert
ddebae8eb3 Add new update procedure 2015-04-18 19:53:10 +02:00
Olivier Lambert
ff9e1ebc9b Update README.md 2015-03-29 15:07:02 +02:00
Olivier Lambert
0ef69135c7 Merge pull request #42 from eXk0n/patch-1
Update apache-reverse.md
2015-03-20 13:53:12 +01:00
Olivier Lambert
58465a80ec Update manual_installation.md 2015-03-09 14:13:08 +01:00
Olivier Lambert
436deb02be Update roadmap.md 2015-03-09 10:51:38 +01:00
Olivier Lambert
33773558d6 Update README.md 2015-03-09 09:19:36 +01:00
(⌐■_■) Deal with it.
0ce72682bf Update apache-reverse.md
Allow consoles to work behind apache2 proxy
2015-03-08 12:33:27 +01:00
Olivier Lambert
75fcb78ec3 Update README.md 2015-02-23 00:25:58 +01:00
Olivier Lambert
3d5117aa5e Merge pull request #38 from rgormley/master
More language changes and tweaks
2015-02-20 00:02:15 +01:00
Rob Gormley
3febe34221 More language changes and tweaks 2015-02-19 14:59:11 -08:00
Olivier Lambert
9b66e00e83 Merge pull request #37 from rgormley/master
Some grammar fixes
2015-02-19 23:46:03 +01:00
Rob Gormley
0e7b053798 Some grammar fixes 2015-02-19 14:42:49 -08:00
Olivier Lambert
5a2d063749 Update xoa_installation.md 2015-02-05 20:14:29 +01:00
Olivier Lambert
d96d50c5c5 Update roadmap.md 2015-02-03 17:59:42 +01:00
Olivier Lambert
bdbca9669f Update roadmap.md 2015-01-15 22:30:34 +01:00
Olivier Lambert
d04b28cf2d Update roadmap.md 2015-01-15 22:28:45 +01:00
Olivier Lambert
8929105c3d Update README.md 2015-01-06 17:50:56 +01:00
Olivier Lambert
3ea19e5e01 Rename nginx-reverse to nginx-reverse.md 2015-01-06 17:50:12 +01:00
Olivier Lambert
7047b6985d Create nginx-reverse 2015-01-06 17:49:55 +01:00
Julien Fontanet
ee94fb0509 Code of conduct. 2015-01-06 14:25:33 +01:00
Olivier Lambert
748ef04e4a Update roadmap.md 2014-12-29 21:56:13 +01:00
Julien Fontanet
920c5ffbb3 npm start is the recommended way 2014-12-19 12:41:16 +01:00
Olivier Lambert
b2d3e2ba97 wget is no longer requiered 2014-12-16 11:05:31 +01:00
Olivier Lambert
424f78a593 Update doc
After a feedback from user 'amnesiac' in our forum, see https://xen-orchestra.com/forum/209-root-password-for-xoa-3-5
2014-12-05 14:13:05 +01:00
Julien Fontanet
3eda70aa65 Update xoa_installation.md 2014-11-28 17:46:39 +01:00
Julien Fontanet
c1751eb637 Update xoa_installation.md 2014-11-28 17:43:34 +01:00
Olivier Lambert
2907fef4f9 Update roadmap.md 2014-11-27 11:21:44 +01:00
Olivier Lambert
067950a344 Update xoa_installation.md 2014-11-15 10:00:47 +01:00
Olivier Lambert
18ab3822bf Update manual_installation.md 2014-10-30 18:26:11 +01:00
Julien Fontanet
db65c7af47 Update forever command 2014-09-08 20:12:39 +02:00
Olivier Lambert
1f5769ff5e Update manual_installation.md 2014-09-08 16:35:32 +02:00
Olivier Lambert
c64e2a17c7 Update installation_freebsd.md 2014-08-28 23:29:35 +02:00
Olivier Lambert
95e1e71b9e Update manual_installation.md 2014-08-28 23:28:46 +02:00
Olivier Lambert
b4348a63a1 Update roadmap.md 2014-08-26 13:43:16 +02:00
Olivier Lambert
427513baaf Update manual_installation.md 2014-08-23 09:32:15 +02:00
Olivier Lambert
e5dcbacc37 Update manual_installation.md 2014-08-23 09:31:44 +02:00
Olivier Lambert
da9fa05a91 Update manual_installation.md 2014-08-23 09:28:36 +02:00
Olivier Lambert
daebb849ce change file name 2014-08-21 13:59:33 +02:00
Olivier Lambert
a302612c6b Update README.md 2014-08-21 13:57:35 +02:00
Olivier Lambert
11a35b5856 add event images 2014-08-21 13:55:00 +02:00
Olivier Lambert
3d146e4083 Update xoa_installation.md 2014-08-20 02:22:13 +02:00
Olivier Lambert
170c2dac21 Update xoa_installation.md 2014-08-20 02:21:51 +02:00
Olivier Lambert
cd55d863d3 Update README.md 2014-08-20 00:55:49 +02:00
Olivier Lambert
62a052a9e4 Update xoa_installation.md 2014-08-14 14:54:58 +02:00
Olivier Lambert
fb2a1cc852 Update README.md 2014-08-14 13:04:00 +02:00
Olivier Lambert
46432d62c3 Update README.md 2014-08-14 13:03:37 +02:00
Olivier Lambert
cccd166037 Update README.md 2014-08-14 13:03:15 +02:00
Olivier Lambert
9fcd828279 Update README.md 2014-08-14 13:02:43 +02:00
Olivier Lambert
260f924840 reorg folders 2014-08-14 12:58:34 +02:00
Olivier Lambert
6bcbd7e9c8 add known bugs 2014-08-14 12:55:25 +02:00
Olivier Lambert
f2ba2bbbc5 known bugs moved 2014-08-14 12:54:35 +02:00
Olivier Lambert
1501f4da49 Update README.md 2014-08-14 12:53:47 +02:00
Olivier Lambert
f72c04c044 Update README.md 2014-08-14 12:51:26 +02:00
Olivier Lambert
4df9c2364a Update README.md 2014-08-14 12:50:41 +02:00
Olivier Lambert
6ec540d89e add mass doc 2014-08-14 12:49:44 +02:00
Olivier Lambert
bd4f0b2078 add folder 2014-08-14 12:44:21 +02:00
Olivier Lambert
9e50c2a41e update doc 2014-08-14 12:43:48 +02:00
Olivier Lambert
19a9e5f3c8 Update README.md 2014-08-14 12:42:38 +02:00
Olivier Lambert
af4b38553d Update README.md 2014-08-14 12:41:18 +02:00
Olivier Lambert
457630bfc1 Update README.md 2014-08-14 12:41:04 +02:00
Olivier Lambert
49791bff45 Update installation_freebsd.md 2014-08-14 12:34:30 +02:00
Olivier Lambert
8d791d2191 Update manual_installation.md 2014-08-14 12:34:20 +02:00
Olivier Lambert
bf0609b2bb Update installation.md 2014-08-14 12:31:44 +02:00
Olivier Lambert
8eaed3bdca Create manual_installation.md 2014-08-14 12:31:35 +02:00
Olivier Lambert
927b3c099f Create xoa_installation.md 2014-08-14 12:30:39 +02:00
Olivier Lambert
56907c6224 Update installation.md 2014-08-14 12:27:08 +02:00
Olivier Lambert
e214128b54 Update installation.md 2014-08-12 15:36:30 +02:00
Olivier Lambert
bfc182657b Update architecture.md 2014-08-07 18:40:53 +02:00
Olivier Lambert
09d674c78d Update README.md 2014-08-07 18:38:52 +02:00
Olivier Lambert
9bdade6314 Update installation_freebsd.md 2014-07-29 20:50:18 +02:00
Olivier Lambert
ed1b564eeb Update installation.md 2014-07-29 20:32:03 +02:00
Olivier Lambert
75df238327 Update installation_freebsd.md 2014-07-29 20:30:47 +02:00
Olivier Lambert
486455c6d7 Update installation_freebsd.md 2014-07-29 20:30:05 +02:00
Olivier Lambert
43eb7fb452 Create installation_freebsd.md 2014-07-29 20:29:18 +02:00
Olivier Lambert
289e90cc83 add backup 2014-06-30 12:07:22 +02:00
Olivier Lambert
82f5394c3c modifications 2014-06-29 17:06:04 +02:00
Olivier Lambert
431ca49021 Update roadmap.md 2014-06-29 13:45:49 +02:00
Olivier Lambert
9c9f9ace2e add features as requested on uservoice 2014-06-29 13:44:42 +02:00
Olivier Lambert
4865bc9b6a moving import export in backlog 2014-06-28 14:39:29 +02:00
Olivier Lambert
97eca2863b add new features 2014-06-28 14:38:35 +02:00
Olivier Lambert
d2daa88d24 fix feature 2014-06-28 11:39:13 +02:00
Olivier Lambert
fc41f4fc22 add features 2014-06-28 11:39:00 +02:00
Olivier Lambert
2d95a94f55 add backlog 2014-06-28 11:30:17 +02:00
Olivier Lambert
77c4809964 add ldap 2014-06-28 11:22:41 +02:00
Olivier Lambert
cf50ce7fc7 Create roadmap 2014-06-28 11:21:46 +02:00
Olivier Lambert
9f3930005d add roadmap link 2014-06-28 11:10:48 +02:00
Olivier Lambert
7eb0c5da8e add link to full doc 2014-05-26 20:25:20 +02:00
Olivier Lambert
45f888c8f9 add VNC stuff. 2014-05-26 20:23:49 +02:00
Olivier Lambert
a05a531d6b Update know bugs. 2014-05-26 20:23:02 +02:00
Olivier Lambert
782b3f920f Update doc 2014-05-24 14:56:38 +02:00
Julien Fontanet
462e454acf Removes unecessary mounts. 2014-03-11 10:52:27 +01:00
Julien Fontanet
8a8f7310f6 Updates installation procedure to reflect latest changes (fix #22). 2014-03-11 10:43:49 +01:00
Julien Fontanet
d8c3b0c919 Data model. 2014-02-21 09:58:06 +01:00
Julien Fontanet
9d1d1e1c76 Minor fix. 2014-02-20 09:25:35 +01:00
Julien Fontanet
85ffdd8311 Minor documentation updates. 2014-02-20 09:24:40 +01:00
Olivier Lambert
25ecdab2a0 add warning about indent in YAML 2014-02-14 14:17:19 +01:00
Olivier Lambert
83153e1905 remove indent block and use reverse quote 2014-02-14 13:42:06 +01:00
Olivier Lambert
6f68668801 minor fix again 2014-02-14 13:29:16 +01:00
Olivier Lambert
5735ccb451 minor fix 2014-02-14 13:28:00 +01:00
Olivier Lambert
10eaaa26ba fix deb link 2014-02-14 13:26:53 +01:00
Olivier Lambert
5795da46c7 new doc for 3.x release 2014-02-14 13:24:06 +01:00
Olivier Lambert
e7e5711030 remove old stuff 2014-02-07 17:46:00 +01:00
Julien Fontanet
cbf020e7e6 Less known bugs. 2013-10-11 17:23:31 +02:00
Julien Fontanet
3cbebd9c09 Add Redis to the installation. 2013-10-08 17:46:29 +02:00
Julien Fontanet
64f2e032e3 Question regarding event.next. 2013-10-03 16:03:15 +02:00
Olivier Lambert
e00a8fd2e9 add question about metrics 2013-10-03 13:42:44 +02:00
Julien Fontanet
5a20006647 XAPI questions. 2013-10-03 13:10:56 +02:00
Julien Fontanet
94743751bf One of the bugs has been fixed. 2013-09-05 17:06:34 +02:00
Julien Fontanet
f38632dd19 Various updates. 2013-09-05 15:21:52 +02:00
Julien Fontanet
7760f47a27 Various updates. 2013-09-05 14:55:18 +02:00
Julien Fontanet
69bf29b93b Bug fixed. 2013-09-02 10:11:41 +02:00
Julien Fontanet
6c2b02112b Update installation.md 2013-08-16 20:27:25 +02:00
Julien Fontanet
486bb525e2 Add git to installed packages. 2013-08-15 10:54:05 +02:00
Julien Fontanet
aedd309442 Minor change. 2013-08-15 10:51:58 +02:00
Julien Fontanet
30f5eca6dd Minor updates. 2013-08-15 10:51:00 +02:00
Olivier Lambert
172475a9ef it works on testing, not wheezy, because node is not packaged in current stable 2013-08-14 17:01:01 +02:00
Olivier Lambert
06ca258089 fix a typo 2013-08-14 16:49:08 +02:00
Julien Fontanet
0573a3d533 Minor updates. 2013-08-14 13:06:48 +02:00
Julien Fontanet
3ec9dc0a45 Documentation. 2013-08-14 13:05:15 +02:00
Julien Fontanet
e5f752b5fa Last try (hopefully). 2013-07-30 11:38:03 +02:00
Julien Fontanet
cfb2e6b70a Other try. 2013-07-30 11:36:57 +02:00
Julien Fontanet
d3627af67f Try to fix image include. 2013-07-30 11:34:33 +02:00
Julien Fontanet
ed6ecbaa72 Initial architecture overview. 2013-07-30 11:33:03 +02:00
Olivier Lambert
5a6ca0a717 fix readme 2013-07-22 10:36:51 +02:00
Julien Fontanet
53a6263930 README improvement. 2013-02-07 19:07:08 +01:00
Olivier Lambert
fb050614e0 Initial commit 2013-02-06 03:27:31 -08:00
818 changed files with 36843 additions and 14560 deletions

View File

@@ -3,63 +3,12 @@
# Julien Fontanet's configuration
# https://gist.github.com/julien-f/8096213
# Top-most EditorConfig file.
root = true
# Common config.
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
# CoffeeScript
#
# https://github.com/polarmobile/coffeescript-style-guide/blob/master/README.md
[*.{,lit}coffee]
indent_size = 2
indent_style = space
# Markdown
[*.{md,mdwn,mdown,markdown}]
indent_size = 4
indent_style = space
# Package.json
#
# This indentation style is the one used by npm.
[package.json]
indent_size = 2
indent_style = space
# Pug (Jade)
[*.{jade,pug}]
indent_size = 2
indent_style = space
# JavaScript
#
# Two spaces seems to be the standard most common style, at least in
# Node.js (http://nodeguide.com/style.html#tabs-vs-spaces).
[*.{js,jsx,ts,tsx}]
indent_size = 2
indent_style = space
# Less
[*.less]
indent_size = 2
indent_style = space
# Sass
#
# Style used for http://libsass.com
[*.s[ac]ss]
indent_size = 2
indent_style = space
# YAML
#
# Only spaces are allowed.
[*.yaml]
indent_size = 2
indent_style = space

2
.env.example Normal file
View File

@@ -0,0 +1,2 @@
# xo_fs_nfs=nfs://ip:/folder
# xo_fs_smb=smb://login:pass@domain\\ip\folder

View File

@@ -1,22 +1,31 @@
module.exports = {
extends: ['standard', 'standard-jsx'],
extends: [
'standard',
'standard-jsx',
'prettier',
'prettier/standard',
'prettier/react',
],
globals: {
__DEV__: true,
$Dict: true,
$Diff: true,
$ElementType: true,
$Exact: true,
$Keys: true,
$PropertyType: true,
$Shape: true,
},
parser: 'babel-eslint',
parserOptions: {
ecmaFeatures: {
legacyDecorators: true,
},
},
rules: {
'comma-dangle': ['error', 'always-multiline'],
indent: 'off',
'no-var': 'error',
'node/no-extraneous-import': 'error',
'node/no-extraneous-require': 'error',
'prefer-const': 'error',
'react/jsx-indent': 'off',
},
}

View File

@@ -9,6 +9,7 @@
[options]
esproposal.decorators=ignore
esproposal.optional_chaining=enable
include_warnings=true
module.use_strict=true

2
.gitignore vendored
View File

@@ -1,3 +1,4 @@
/_book/
/coverage/
/node_modules/
/lerna-debug.log
@@ -29,3 +30,4 @@ pnpm-debug.log
pnpm-debug.log.*
yarn-error.log
yarn-error.log.*
.env

View File

@@ -1,4 +1,5 @@
module.exports = {
jsxSingleQuote: true,
semi: false,
singleQuote: true,
trailingComma: 'es5',

View File

@@ -2,7 +2,6 @@ language: node_js
node_js:
#- stable # disable for now due to an issue of indirect dep upath with Node 9
- 8
- 6
# Use containers.
# http://docs.travis-ci.com/user/workers/container-based-infrastructure/
@@ -10,9 +9,9 @@ sudo: false
addons:
apt:
packages:
- qemu-utils
- blktap-utils
- vmdk-stream-converter
- qemu-utils
- blktap-utils
- vmdk-stream-converter
before_install:
- curl -o- -L https://yarnpkg.com/install.sh | bash
@@ -22,5 +21,4 @@ cache:
yarn: true
script:
- yarn run test
- yarn run test-integration
- yarn run travis-tests

View File

@@ -0,0 +1,3 @@
module.exports = require('../../@xen-orchestra/babel-config')(
require('./package.json')
)

View File

@@ -0,0 +1,24 @@
/benchmark/
/benchmarks/
*.bench.js
*.bench.js.map
/examples/
example.js
example.js.map
*.example.js
*.example.js.map
/fixture/
/fixtures/
*.fixture.js
*.fixture.js.map
*.fixtures.js
*.fixtures.js.map
/test/
/tests/
*.spec.js
*.spec.js.map
__snapshots__/

View File

@@ -0,0 +1,49 @@
# @xen-orchestra/async-map [![Build Status](https://travis-ci.org/vatesfr/xen-orchestra.png?branch=master)](https://travis-ci.org/vatesfr/xen-orchestra)
> ${pkg.description}
## Install
Installation of the [npm package](https://npmjs.org/package/@xen-orchestra/async-map):
```
> npm install --save @xen-orchestra/async-map
```
## Usage
**TODO**
## Development
```
# Install dependencies
> yarn
# Run the tests
> yarn test
# Continuously compile
> yarn dev
# Continuously run the tests
> yarn dev-test
# Build for production (automatically called by npm install)
> yarn build
```
## Contributions
Contributions are *very* welcomed, either on the documentation or on
the code.
You may:
- report any [issue](https://github.com/vatesfr/xen-orchestra/issues)
you've encountered;
- fork and create a pull request.
## License
ISC © [Vates SAS](https://vates.fr)

View File

@@ -0,0 +1,51 @@
{
"name": "@xen-orchestra/async-map",
"version": "0.0.0",
"license": "ISC",
"description": "",
"keywords": [],
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/async-map",
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
"repository": {
"directory": "@xen-orchestra/async-map",
"type": "git",
"url": "https://github.com/vatesfr/xen-orchestra.git"
},
"author": {
"name": "Julien Fontanet",
"email": "julien.fontanet@isonoe.net"
},
"preferGlobal": false,
"main": "dist/",
"bin": {},
"files": [
"dist/"
],
"browserslist": [
">2%"
],
"engines": {
"node": ">=6"
},
"dependencies": {
"lodash": "^4.17.4"
},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/preset-flow": "^7.0.0",
"babel-plugin-lodash": "^3.3.2",
"cross-env": "^5.1.3",
"rimraf": "^2.6.2"
},
"scripts": {
"build": "cross-env NODE_ENV=production babel --source-maps --out-dir=dist/ src/",
"clean": "rimraf dist/",
"dev": "cross-env NODE_ENV=development babel --watch --source-maps --out-dir=dist/ src/",
"prebuild": "yarn run clean",
"predev": "yarn run prebuild",
"prepare": "yarn run build",
"prepublishOnly": "yarn run build"
}
}

View File

@@ -0,0 +1,43 @@
// type MaybePromise<T> = Promise<T> | T
//
// declare export function asyncMap<T1, T2>(
// collection: MaybePromise<T1[]>,
// (T1, number) => MaybePromise<T2>
// ): Promise<T2[]>
// declare export function asyncMap<K, V1, V2>(
// collection: MaybePromise<{ [K]: V1 }>,
// (V1, K) => MaybePromise<V2>
// ): Promise<V2[]>
import map from 'lodash/map'
// Similar to map() + Promise.all() but wait for all promises to
// settle before rejecting (with the first error)
const asyncMap = (collection, iteratee) => {
let then
if (collection != null && typeof (then = collection.then) === 'function') {
return then.call(collection, collection => asyncMap(collection, iteratee))
}
let errorContainer
const onError = error => {
if (errorContainer === undefined) {
errorContainer = { error }
}
}
return Promise.all(
map(collection, (item, key, collection) =>
new Promise(resolve => {
resolve(iteratee(item, key, collection))
}).catch(onError)
)
).then(values => {
if (errorContainer !== undefined) {
throw errorContainer.error
}
return values
})
}
export { asyncMap as default }

View File

@@ -11,23 +11,27 @@ const configs = {
'@babel/plugin-proposal-decorators': {
legacy: true,
},
'@babel/preset-env' (pkg) {
'@babel/plugin-proposal-pipeline-operator': {
proposal: 'minimal',
},
'@babel/preset-env'(pkg) {
return {
debug: !__TEST__,
loose: true,
// disabled until https://github.com/babel/babel/issues/8323 is resolved
// loose: true,
shippedProposals: true,
targets: __PROD__
? (() => {
let node = (pkg.engines || {}).node
if (node !== undefined) {
const trimChars = '^=>~'
while (trimChars.includes(node[0])) {
node = node.slice(1)
}
return { node: node }
}
})()
: { browsers: '', node: 'current' },
targets: (() => {
let node = (pkg.engines || {}).node
if (node !== undefined) {
const trimChars = '^=>~'
while (trimChars.includes(node[0])) {
node = node.slice(1)
}
}
return { browsers: pkg.browserslist, node }
})(),
useBuiltIns: '@babel/polyfill' in (pkg.dependencies || {}) && 'usage',
}
},
@@ -38,11 +42,11 @@ const getConfig = (key, ...args) => {
return config === undefined
? {}
: typeof config === 'function'
? config(...args)
: config
? config(...args)
: config
}
module.exports = function (pkg, plugins, presets) {
module.exports = function(pkg, plugins, presets) {
plugins === undefined && (plugins = {})
presets === undefined && (presets = {})

View File

@@ -5,6 +5,7 @@
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/babel-config",
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
"repository": {
"directory": "@xen-orchestra/babel-config",
"type": "git",
"url": "https://github.com/vatesfr/xen-orchestra.git"
}

View File

@@ -0,0 +1,108 @@
#!/usr/bin/env node
const defer = require('golike-defer').default
const { NULL_REF, Xapi } = require('xen-api')
const pkg = require('./package.json')
Xapi.prototype.getVmDisks = async function(vm) {
const disks = { __proto__: null }
await Promise.all([
...vm.VBDs.map(async vbdRef => {
const vbd = await this.getRecord('VBD', vbdRef)
let vdiRef
if (vbd.type === 'Disk' && (vdiRef = vbd.VDI) !== NULL_REF) {
disks[vbd.userdevice] = await this.getRecord('VDI', vdiRef)
}
}),
])
return disks
}
defer(async function main($defer, args) {
if (args.length === 0 || args.includes('-h') || args.includes('--help')) {
const cliName = Object.keys(pkg.bin)[0]
return console.error(
'%s',
`
Usage: ${cliName} <source XAPI URL> <source snapshot UUID> <target XAPI URL> <target VM UUID> <backup job id> <backup schedule id>
${cliName} v${pkg.version}
`
)
}
const [
srcXapiUrl,
srcSnapshotUuid,
tgtXapiUrl,
tgtVmUuid,
jobId,
scheduleId,
] = args
const srcXapi = new Xapi({
allowUnauthorized: true,
url: srcXapiUrl,
watchEvents: false,
})
await srcXapi.connect()
defer.call(srcXapi, 'disconnect')
const tgtXapi = new Xapi({
allowUnauthorized: true,
url: tgtXapiUrl,
watchEvents: false,
})
await tgtXapi.connect()
defer.call(tgtXapi, 'disconnect')
const [srcSnapshot, tgtVm] = await Promise.all([
srcXapi.getRecordByUuid('VM', srcSnapshotUuid),
tgtXapi.getRecordByUuid('VM', tgtVmUuid),
])
const srcVm = await srcXapi.getRecord('VM', srcSnapshot.snapshot_of)
const metadata = {
'xo:backup:datetime': srcSnapshot.snapshot_time,
'xo:backup:job': jobId,
'xo:backup:schedule': scheduleId,
'xo:backup:vm': srcVm.uuid,
}
const [srcDisks, tgtDisks] = await Promise.all([
srcXapi.getVmDisks(srcSnapshot),
tgtXapi.getVmDisks(tgtVm),
])
const userDevices = Object.keys(tgtDisks)
const tgtSr = await tgtXapi.getRecord(
'SR',
tgtDisks[Object.keys(tgtDisks)[0]].SR
)
await Promise.all([
srcSnapshot.update_other_config(metadata),
srcSnapshot.update_other_config('xo:backup:exported', 'true'),
tgtVm.set_name_label(`${srcVm.name_label} (${srcSnapshot.snapshot_time})`),
tgtVm.update_other_config(metadata),
tgtVm.update_other_config({
'xo:backup:sr': tgtSr.uuid,
'xo:copy_of': srcSnapshotUuid,
}),
tgtVm.update_blocked_operations(
'start',
'Start operation for this vm is blocked, clone it if you want to use it.'
),
Promise.all(
userDevices.map(userDevice => {
const srcDisk = srcDisks[userDevice]
const tgtDisk = tgtDisks[userDevice]
return tgtDisk.update_other_config({
'xo:copy_of': srcDisk.uuid,
})
})
),
])
})(process.argv.slice(2)).catch(console.error.bind(console, 'Fatal error:'))

View File

@@ -0,0 +1,21 @@
{
"name": "@xen-orchestra/cr-seed-cli",
"version": "0.2.0",
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/cr-seed-cli",
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
"repository": {
"directory": "@xen-orchestra/cr-seed-cli",
"type": "git",
"url": "https://github.com/vatesfr/xen-orchestra.git"
},
"engines": {
"node": ">=8"
},
"bin": {
"xo-cr-seed": "./index.js"
},
"dependencies": {
"golike-defer": "^0.4.1",
"xen-api": "^0.24.5"
}
}

View File

@@ -17,6 +17,7 @@
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/cron",
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
"repository": {
"directory": "@xen-orchestra/cron",
"type": "git",
"url": "https://github.com/vatesfr/xen-orchestra.git"
},
@@ -41,10 +42,10 @@
"moment-timezone": "^0.5.14"
},
"devDependencies": {
"@babel/cli": "7.0.0-beta.49",
"@babel/core": "7.0.0-beta.49",
"@babel/preset-env": "7.0.0-beta.49",
"@babel/preset-flow": "7.0.0-beta.49",
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/preset-flow": "^7.0.0",
"cross-env": "^5.1.3",
"rimraf": "^2.6.2"
},

View File

@@ -6,9 +6,14 @@ import parse from './parse'
const MAX_DELAY = 2 ** 31 - 1
class Job {
constructor (schedule, fn) {
constructor(schedule, fn) {
const wrapper = () => {
const result = fn()
let result
try {
result = fn()
} catch (_) {
// catch any thrown value to ensure it does not break the job
}
let then
if (result != null && typeof (then = result.then) === 'function') {
then.call(result, scheduleNext, scheduleNext)
@@ -28,30 +33,32 @@ class Job {
this._timeout = undefined
}
start () {
start() {
this.stop()
this._scheduleNext()
}
stop () {
stop() {
clearTimeout(this._timeout)
}
}
class Schedule {
constructor (pattern, zone = 'utc') {
constructor(pattern, zone = 'utc') {
this._schedule = parse(pattern)
this._createDate =
zone.toLowerCase() === 'utc'
? moment.utc
: zone === 'local' ? moment : () => moment.tz(zone)
: zone === 'local'
? moment
: () => moment.tz(zone)
}
createJob (fn) {
createJob(fn) {
return new Job(this, fn)
}
next (n) {
next(n) {
const dates = new Array(n)
const schedule = this._schedule
let date = this._createDate()
@@ -61,12 +68,12 @@ class Schedule {
return dates
}
_nextDelay () {
_nextDelay() {
const now = this._createDate()
return next(this._schedule, now) - now
}
startJob (fn) {
startJob(fn) {
const job = this.createJob(fn)
job.start()
return job.stop.bind(job)

View File

@@ -0,0 +1,3 @@
module.exports = require('../../@xen-orchestra/babel-config')(
require('./package.json')
)

View File

@@ -0,0 +1,24 @@
/benchmark/
/benchmarks/
*.bench.js
*.bench.js.map
/examples/
example.js
example.js.map
*.example.js
*.example.js.map
/fixture/
/fixtures/
*.fixture.js
*.fixture.js.map
*.fixtures.js
*.fixtures.js.map
/test/
/tests/
*.spec.js
*.spec.js.map
__snapshots__/

View File

@@ -0,0 +1,49 @@
# ${pkg.name} [![Build Status](https://travis-ci.org/${pkg.shortGitHubPath}.png?branch=master)](https://travis-ci.org/${pkg.shortGitHubPath})
> ${pkg.description}
## Install
Installation of the [npm package](https://npmjs.org/package/${pkg.name}):
```
> npm install --save ${pkg.name}
```
## Usage
**TODO**
## Development
```
# Install dependencies
> yarn
# Run the tests
> yarn test
# Continuously compile
> yarn dev
# Continuously run the tests
> yarn dev-test
# Build for production (automatically called by npm install)
> yarn build
```
## Contributions
Contributions are *very* welcomed, either on the documentation or on
the code.
You may:
- report any [issue](${pkg.bugs})
you've encountered;
- fork and create a pull request.
## License
${pkg.license} © [${pkg.author.name}](${pkg.author.url})

View File

@@ -0,0 +1,48 @@
{
"name": "@xen-orchestra/defined",
"version": "0.0.0",
"license": "ISC",
"description": "",
"keywords": [],
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/defined",
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
"repository": {
"directory": "@xen-orchestra/defined",
"type": "git",
"url": "https://github.com/vatesfr/xen-orchestra.git"
},
"author": {
"name": "Julien Fontanet",
"email": "julien.fontanet@vates.fr"
},
"preferGlobal": false,
"main": "dist/",
"bin": {},
"files": [
"dist/"
],
"browserslist": [
">2%"
],
"engines": {
"node": ">=6"
},
"dependencies": {},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/preset-flow": "^7.0.0",
"babel-plugin-lodash": "^3.3.2",
"cross-env": "^5.1.3",
"rimraf": "^2.6.2"
},
"scripts": {
"build": "cross-env NODE_ENV=production babel --source-maps --out-dir=dist/ src/",
"clean": "rimraf dist/",
"dev": "cross-env NODE_ENV=development babel --watch --source-maps --out-dir=dist/ src/",
"prebuild": "yarn run clean",
"predev": "yarn run prebuild",
"prepublishOnly": "yarn run build"
}
}

View File

@@ -1,3 +1,5 @@
// @flow
// Usage:
//
// ```js
@@ -11,7 +13,7 @@
// process.env.http_proxy
// ])
// ```
export default function defined () {
export default function defined() {
let args = arguments
let n = args.length
if (n === 1) {
@@ -39,7 +41,7 @@ export default function defined () {
// const getFriendName = _ => _.friends[0].name
// const friendName = get(getFriendName, props.user)
// ```
export const get = (accessor, arg) => {
export const get = (accessor: (input: ?any) => any, arg: ?any) => {
try {
return accessor(arg)
} catch (error) {
@@ -58,5 +60,5 @@ export const get = (accessor, arg) => {
// _ => new ProxyAgent(_)
// )
// ```
export const ifDef = (value, thenFn) =>
export const ifDef = (value: ?any, thenFn: (value: any) => any) =>
value !== undefined ? thenFn(value) : value

View File

@@ -0,0 +1,3 @@
module.exports = require('../../@xen-orchestra/babel-config')(
require('./package.json')
)

View File

@@ -0,0 +1,24 @@
/benchmark/
/benchmarks/
*.bench.js
*.bench.js.map
/examples/
example.js
example.js.map
*.example.js
*.example.js.map
/fixture/
/fixtures/
*.fixture.js
*.fixture.js.map
*.fixtures.js
*.fixtures.js.map
/test/
/tests/
*.spec.js
*.spec.js.map
__snapshots__/

View File

@@ -0,0 +1,71 @@
# @xen-orchestra/emit-async [![Build Status](https://travis-ci.org/${pkg.shortGitHubPath}.png?branch=master)](https://travis-ci.org/${pkg.shortGitHubPath})
> ${pkg.description}
## Install
Installation of the [npm package](https://npmjs.org/package/@xen-orchestra/emit-async):
```
> npm install --save @xen-orchestra/emit-async
```
## Usage
```js
import EE from 'events'
import emitAsync from '@xen-orchestra/emit-async'
const ee = new EE()
ee.emitAsync = emitAsync
ee.on('start', async function () {
// whatever
})
// similar to EventEmmiter#emit() but returns a promise which resolves when all
// listeners have resolved
await ee.emitAsync('start')
// by default, it will rejects as soon as one listener reject, you can customise
// error handling though:
await ee.emitAsync({
onError (error) {
console.warn(error)
}
}, 'start')
```
## Development
```
# Install dependencies
> yarn
# Run the tests
> yarn test
# Continuously compile
> yarn dev
# Continuously run the tests
> yarn dev-test
# Build for production (automatically called by npm install)
> yarn build
```
## Contributions
Contributions are *very* welcomed, either on the documentation or on
the code.
You may:
- report any [issue](${pkg.bugs})
you've encountered;
- fork and create a pull request.
## License
${pkg.license} © [${pkg.author.name}](${pkg.author.url})

View File

@@ -0,0 +1,47 @@
{
"name": "@xen-orchestra/emit-async",
"version": "0.0.0",
"license": "ISC",
"description": "",
"keywords": [],
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/emit-async",
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
"repository": {
"directory": "@xen-orchestra/emit-async",
"type": "git",
"url": "https://github.com/vatesfr/xen-orchestra.git"
},
"author": {
"name": "Julien Fontanet",
"email": "julien.fontanet@vates.fr"
},
"preferGlobal": false,
"main": "dist/",
"bin": {},
"files": [
"dist/"
],
"browserslist": [
">2%"
],
"engines": {
"node": ">=6"
},
"dependencies": {},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"babel-plugin-lodash": "^3.3.2",
"cross-env": "^5.1.3",
"rimraf": "^2.6.2"
},
"scripts": {
"build": "cross-env NODE_ENV=production babel --source-maps --out-dir=dist/ src/",
"clean": "rimraf dist/",
"dev": "cross-env NODE_ENV=development babel --watch --source-maps --out-dir=dist/ src/",
"prebuild": "yarn run clean",
"predev": "yarn run prebuild",
"prepublishOnly": "yarn run build"
}
}

View File

@@ -0,0 +1,26 @@
export default function emitAsync(event) {
let opts
let i = 1
// an option object has been passed as first param
if (typeof event !== 'string') {
opts = event
event = arguments[i++]
}
const n = arguments.length - i
const args = new Array(n)
for (let j = 0; j < n; ++j) {
args[j] = arguments[j + i]
}
const onError = opts != null && opts.onError
return Promise.all(
this.listeners(event).map(listener =>
new Promise(resolve => {
resolve(listener.apply(this, args))
}).catch(onError)
)
)
}

View File

@@ -1,12 +1,13 @@
{
"name": "@xen-orchestra/fs",
"version": "0.1.0",
"version": "0.7.1",
"license": "AGPL-3.0",
"description": "The File System for Xen Orchestra backups.",
"keywords": [],
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/fs",
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
"repository": {
"directory": "@xen-orchestra/fs",
"type": "git",
"url": "https://github.com/vatesfr/xen-orchestra.git"
},
@@ -20,26 +21,31 @@
"node": ">=6"
},
"dependencies": {
"@babel/runtime": "^7.0.0-beta.49",
"@marsaud/smb2-promise": "^0.2.1",
"execa": "^0.10.0",
"fs-extra": "^6.0.1",
"get-stream": "^3.0.0",
"@marsaud/smb2": "^0.13.0",
"@sindresorhus/df": "^2.1.0",
"@xen-orchestra/async-map": "^0.0.0",
"decorator-synchronized": "^0.3.0",
"execa": "^1.0.0",
"fs-extra": "^7.0.0",
"get-stream": "^4.0.0",
"lodash": "^4.17.4",
"promise-toolbox": "^0.9.5",
"through2": "^2.0.3",
"promise-toolbox": "^0.11.0",
"readable-stream": "^3.0.6",
"through2": "^3.0.0",
"tmp": "^0.0.33",
"xo-remote-parser": "^0.3"
"xo-remote-parser": "^0.5.0"
},
"devDependencies": {
"@babel/cli": "7.0.0-beta.49",
"@babel/core": "7.0.0-beta.49",
"@babel/plugin-proposal-function-bind": "7.0.0-beta.49",
"@babel/plugin-transform-runtime": "^7.0.0-beta.49",
"@babel/preset-env": "7.0.0-beta.49",
"@babel/preset-flow": "7.0.0-beta.49",
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/plugin-proposal-decorators": "^7.1.6",
"@babel/plugin-proposal-function-bind": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"@babel/preset-flow": "^7.0.0",
"async-iterator-to-stream": "^1.1.0",
"babel-plugin-lodash": "^3.3.2",
"cross-env": "^5.1.3",
"dotenv": "^6.1.0",
"index-modules": "^0.3.0",
"rimraf": "^2.6.2"
},

View File

@@ -0,0 +1,108 @@
import execa from 'execa'
import fs from 'fs-extra'
import { ignoreErrors } from 'promise-toolbox'
import { join } from 'path'
import { tmpdir } from 'os'
import LocalHandler from './local'
const sudoExeca = (command, args, opts) =>
execa('sudo', [command, ...args], opts)
export default class MountHandler extends LocalHandler {
constructor(
remote,
{
mountsDir = join(tmpdir(), 'xo-fs-mounts'),
useSudo = false,
...opts
} = {},
params
) {
super(remote, opts)
this._execa = useSudo ? sudoExeca : execa
this._keeper = undefined
this._params = {
...params,
options: [params.options, remote.options]
.filter(_ => _ !== undefined)
.join(','),
}
this._realPath = join(
mountsDir,
remote.id ||
Math.random()
.toString(36)
.slice(2)
)
}
async _forget() {
const keeper = this._keeper
if (keeper === undefined) {
return
}
this._keeper = undefined
await fs.close(keeper)
await ignoreErrors.call(
this._execa('umount', [this._getRealPath()], {
env: {
LANG: 'C',
},
})
)
}
_getRealPath() {
return this._realPath
}
async _sync() {
// in case of multiple `sync`s, ensure we properly close previous keeper
{
const keeper = this._keeper
if (keeper !== undefined) {
this._keeper = undefined
ignoreErrors.call(fs.close(keeper))
}
}
const realPath = this._getRealPath()
await fs.ensureDir(realPath)
try {
const { type, device, options, env } = this._params
await this._execa(
'mount',
['-t', type, device, realPath, '-o', options],
{
env: {
LANG: 'C',
...env,
},
}
)
} catch (error) {
try {
// the failure may mean it's already mounted, use `findmnt` to check
// that's the case
await this._execa('findmnt', [realPath], {
stdio: 'ignore',
})
} catch (_) {
throw error
}
}
// keep an open file on the mount to prevent it from being unmounted if used
// by another handler/process
const keeperPath = `${realPath}/.keeper_${Math.random()
.toString(36)
.slice(2)}`
this._keeper = await fs.open(keeperPath, 'w')
ignoreErrors.call(fs.unlink(keeperPath))
}
}

View File

@@ -0,0 +1,9 @@
import path from 'path'
const { resolve } = path.posix
// normalize the path:
// - does not contains `.` or `..` (cannot escape root dir)
// - always starts with `/`
const normalizePath = path => resolve('/', path)
export { normalizePath as default }

View File

@@ -1,192 +1,172 @@
// @flow
// $FlowFixMe
import getStream from 'get-stream'
import { randomBytes } from 'crypto'
import { fromCallback, fromEvent, ignoreErrors } from 'promise-toolbox'
import { type Readable, type Writable } from 'stream'
import { parse } from 'xo-remote-parser'
import asyncMap from '@xen-orchestra/async-map'
import path from 'path'
import synchronized from 'decorator-synchronized'
import { fromCallback, fromEvent, ignoreErrors, timeout } from 'promise-toolbox'
import { parse } from 'xo-remote-parser'
import { randomBytes } from 'crypto'
import { type Readable, type Writable } from 'stream'
import normalizePath from './_normalizePath'
import { createChecksumStream, validChecksumOfReadStream } from './checksum'
const { dirname } = path.posix
type Data = Buffer | Readable | string
type FileDescriptor = {| fd: mixed, path: string |}
type LaxReadable = Readable & Object
type LaxWritable = Writable & Object
type RemoteInfo = { used?: number, size?: number }
type File = FileDescriptor | string
const checksumFile = file => file + '.checksum'
export default class RemoteHandlerAbstract {
_remote: Object
constructor (remote: any) {
this._remote = { ...remote, ...parse(remote.url) }
if (this._remote.type !== this.type) {
throw new Error('Incorrect remote type')
}
const DEFAULT_TIMEOUT = 6e5 // 10 min
const ignoreEnoent = error => {
if (error == null || error.code !== 'ENOENT') {
throw error
}
}
class PrefixWrapper {
constructor(handler, prefix) {
this._prefix = prefix
this._handler = handler
}
get type (): string {
throw new Error('Not implemented')
get type() {
return this._handler.type
}
/**
* Asks the handler to sync the state of the effective remote with its' metadata
*/
async sync (): Promise<mixed> {
return this._sync()
}
async _sync (): Promise<mixed> {
throw new Error('Not implemented')
}
/**
* Free the resources possibly dedicated to put the remote at work, when it is no more needed
*/
async forget (): Promise<void> {
await this._forget()
}
async _forget (): Promise<void> {
throw new Error('Not implemented')
}
async test (): Promise<Object> {
const testFileName = `${Date.now()}.test`
const data = await fromCallback(cb => randomBytes(1024 * 1024, cb))
let step = 'write'
try {
await this.outputFile(testFileName, data)
step = 'read'
const read = await this.readFile(testFileName)
if (data.compare(read) !== 0) {
throw new Error('output and input did not match')
}
return {
success: true,
}
} catch (error) {
return {
success: false,
step,
file: testFileName,
error: error.message || String(error),
}
} finally {
ignoreErrors.call(this.unlink(testFileName))
}
}
async outputFile (file: string, data: Data, options?: Object): Promise<void> {
return this._outputFile(file, data, {
flags: 'wx',
...options,
})
}
async _outputFile (file: string, data: Data, options?: Object): Promise<void> {
const stream = await this.createOutputStream(file, options)
const promise = fromEvent(stream, 'finish')
stream.end(data)
await promise
}
async read (
file: File,
buffer: Buffer,
position?: number
): Promise<{| bytesRead: number, buffer: Buffer |}> {
return this._read(file, buffer, position)
}
_read (
file: File,
buffer: Buffer,
position?: number
): Promise<{| bytesRead: number, buffer: Buffer |}> {
throw new Error('Not implemented')
}
async readFile (file: string, options?: Object): Promise<Buffer> {
return this._readFile(file, options)
}
_readFile (file: string, options?: Object): Promise<Buffer> {
return this.createReadStream(file, options).then(getStream.buffer)
}
async rename (
oldPath: string,
newPath: string,
{ checksum = false }: Object = {}
) {
let p = this._rename(oldPath, newPath)
if (checksum) {
p = Promise.all([
p,
this._rename(checksumFile(oldPath), checksumFile(newPath)),
])
}
return p
}
async _rename (oldPath: string, newPath: string) {
throw new Error('Not implemented')
}
async list (
dir: string = '.',
{
filter,
prependDir = false,
}: { filter?: (name: string) => boolean, prependDir?: boolean } = {}
): Promise<string[]> {
let entries = await this._list(dir)
if (filter !== undefined) {
entries = entries.filter(filter)
}
if (prependDir) {
entries.forEach((entry, i) => {
entries[i] = dir + '/' + entry
// necessary to remove the prefix from the path with `prependDir` option
async list(dir, opts) {
const entries = await this._handler.list(this._resolve(dir), opts)
if (opts != null && opts.prependDir) {
const n = this._prefix.length
entries.forEach((entry, i, entries) => {
entries[i] = entry.slice(n)
})
}
return entries
}
async _list (dir: string): Promise<string[]> {
rename(oldPath, newPath) {
return this._handler.rename(this._resolve(oldPath), this._resolve(newPath))
}
_resolve(path) {
return this._prefix + normalizePath(path)
}
}
export default class RemoteHandlerAbstract {
_remote: Object
_timeout: number
constructor(remote: any, options: Object = {}) {
if (remote.url === 'test://') {
this._remote = remote
} else {
this._remote = { ...remote, ...parse(remote.url) }
if (this._remote.type !== this.type) {
throw new Error('Incorrect remote type')
}
}
;({ timeout: this._timeout = DEFAULT_TIMEOUT } = options)
}
// Public members
get type(): string {
throw new Error('Not implemented')
}
createReadStream (
file: string,
addPrefix(prefix: string) {
prefix = normalizePath(prefix)
return prefix === '/' ? this : new PrefixWrapper(this, prefix)
}
async closeFile(fd: FileDescriptor): Promise<void> {
await timeout.call(this._closeFile(fd.fd), this._timeout)
}
async createOutputStream(
file: File,
{ checksum = false, ...options }: Object = {}
): Promise<LaxWritable> {
if (typeof file === 'string') {
file = normalizePath(file)
}
const path = typeof file === 'string' ? file : file.path
const streamP = timeout.call(
this._createOutputStream(file, {
flags: 'wx',
...options,
}),
this._timeout
)
if (!checksum) {
return streamP
}
const checksumStream = createChecksumStream()
const forwardError = error => {
checksumStream.emit('error', error)
}
const stream = await streamP
stream.on('error', forwardError)
checksumStream.pipe(stream)
// $FlowFixMe
checksumStream.checksumWritten = checksumStream.checksum
.then(value =>
this._outputFile(checksumFile(path), value, { flags: 'wx' })
)
.catch(forwardError)
return checksumStream
}
createReadStream(
file: File,
{ checksum = false, ignoreMissingChecksum = false, ...options }: Object = {}
): Promise<LaxReadable> {
if (typeof file === 'string') {
file = normalizePath(file)
}
const path = typeof file === 'string' ? file : file.path
const streamP = this._createReadStream(file, options).then(stream => {
// detect early errors
let promise = fromEvent(stream, 'readable')
const streamP = timeout
.call(this._createReadStream(file, options), this._timeout)
.then(stream => {
// detect early errors
let promise = fromEvent(stream, 'readable')
// try to add the length prop if missing and not a range stream
if (
stream.length === undefined &&
options.end === undefined &&
options.start === undefined
) {
promise = Promise.all([
promise,
ignoreErrors.call(
this.getSize(file).then(size => {
stream.length = size
})
),
])
}
// try to add the length prop if missing and not a range stream
if (
stream.length === undefined &&
options.end === undefined &&
options.start === undefined
) {
promise = Promise.all([
promise,
ignoreErrors.call(
this._getSize(file).then(size => {
stream.length = size
})
),
])
}
return promise.then(() => stream)
})
return promise.then(() => stream)
})
if (!checksum) {
return streamP
@@ -195,7 +175,7 @@ export default class RemoteHandlerAbstract {
// avoid a unhandled rejection warning
ignoreErrors.call(streamP)
return this.readFile(checksumFile(path)).then(
return this._readFile(checksumFile(path), { flags: 'r' }).then(
checksum =>
streamP.then(stream => {
const { length } = stream
@@ -216,92 +196,382 @@ export default class RemoteHandlerAbstract {
)
}
async _createReadStream (
createWriteStream(
file: File,
options: { end?: number, flags?: string, start?: number } = {}
): Promise<LaxWritable> {
return timeout.call(
this._createWriteStream(
typeof file === 'string' ? normalizePath(file) : file,
{
flags: 'wx',
...options,
}
)
)
}
// Free the resources possibly dedicated to put the remote at work, when it
// is no more needed
//
// FIXME: Some handlers are implemented based on system-wide mecanisms (such
// as mount), forgetting them might breaking other processes using the same
// remote.
@synchronized()
async forget(): Promise<void> {
await this._forget()
}
async getInfo(): Promise<RemoteInfo> {
return timeout.call(this._getInfo(), this._timeout)
}
async getSize(file: File): Promise<number> {
return timeout.call(
this._getSize(typeof file === 'string' ? normalizePath(file) : file),
this._timeout
)
}
async list(
dir: string,
{
filter,
prependDir = false,
}: { filter?: (name: string) => boolean, prependDir?: boolean } = {}
): Promise<string[]> {
const virtualDir = normalizePath(dir)
dir = normalizePath(dir)
let entries = await timeout.call(this._list(dir), this._timeout)
if (filter !== undefined) {
entries = entries.filter(filter)
}
if (prependDir) {
entries.forEach((entry, i) => {
entries[i] = virtualDir + '/' + entry
})
}
return entries
}
async mkdir(dir: string): Promise<void> {
dir = normalizePath(dir)
try {
await this._mkdir(dir)
} catch (error) {
if (error == null || error.code !== 'EEXIST') {
throw error
}
// this operation will throw if it's not already a directory
await this._list(dir)
}
}
async mktree(dir: string): Promise<void> {
await this._mktree(normalizePath(dir))
}
async openFile(path: string, flags: string): Promise<FileDescriptor> {
path = normalizePath(path)
return {
fd: await timeout.call(this._openFile(path, flags), this._timeout),
path,
}
}
async outputFile(
file: string,
options?: Object
): Promise<LaxReadable> {
throw new Error('Not implemented')
data: Data,
{ flags = 'wx' }: { flags?: string } = {}
): Promise<void> {
await this._outputFile(normalizePath(file), data, { flags })
}
async openFile (path: string, flags?: string): Promise<FileDescriptor> {
return { fd: await this._openFile(path, flags), path }
async read(
file: File,
buffer: Buffer,
position?: number
): Promise<{| bytesRead: number, buffer: Buffer |}> {
return this._read(
typeof file === 'string' ? normalizePath(file) : file,
buffer,
position
)
}
async _openFile (path: string, flags?: string): Promise<mixed> {
throw new Error('Not implemented')
async readFile(
file: string,
{ flags = 'r' }: { flags?: string } = {}
): Promise<Buffer> {
return this._readFile(normalizePath(file), { flags })
}
async closeFile (fd: FileDescriptor): Promise<void> {
await this._closeFile(fd.fd)
}
async refreshChecksum(path: string): Promise<void> {
path = normalizePath(path)
async _closeFile (fd: mixed): Promise<void> {
throw new Error('Not implemented')
}
async refreshChecksum (path: string): Promise<void> {
const stream = (await this.createReadStream(path)).pipe(
const stream = (await this._createReadStream(path, { flags: 'r' })).pipe(
createChecksumStream()
)
stream.resume() // start reading the whole file
await this.outputFile(checksumFile(path), await stream.checksum)
}
async createOutputStream (
file: File,
{ checksum = false, ...options }: Object = {}
): Promise<LaxWritable> {
const path = typeof file === 'string' ? file : file.path
const streamP = this._createOutputStream(file, {
await this._outputFile(checksumFile(path), await stream.checksum, {
flags: 'wx',
...options,
})
if (!checksum) {
return streamP
}
const checksumStream = createChecksumStream()
const forwardError = error => {
checksumStream.emit('error', error)
}
const stream = await streamP
stream.on('error', forwardError)
checksumStream.pipe(stream)
// $FlowFixMe
checksumStream.checksumWritten = checksumStream.checksum
.then(value => this.outputFile(checksumFile(path), value))
.catch(forwardError)
return checksumStream
}
async _createOutputStream (
file: mixed,
options?: Object
): Promise<LaxWritable> {
throw new Error('Not implemented')
async rename(
oldPath: string,
newPath: string,
{ checksum = false }: Object = {}
) {
oldPath = normalizePath(oldPath)
newPath = normalizePath(newPath)
let p = timeout.call(this._rename(oldPath, newPath), this._timeout)
if (checksum) {
p = Promise.all([
p,
this._rename(checksumFile(oldPath), checksumFile(newPath)),
])
}
return p
}
async unlink (file: string, { checksum = true }: Object = {}): Promise<void> {
async rmdir(dir: string): Promise<void> {
await timeout.call(
this._rmdir(normalizePath(dir)).catch(ignoreEnoent),
this._timeout
)
}
async rmtree(dir: string): Promise<void> {
await this._rmtree(normalizePath(dir))
}
// Asks the handler to sync the state of the effective remote with its'
// metadata
//
// This method MUST ALWAYS be called before using the handler.
@synchronized()
async sync(): Promise<void> {
await this._sync()
}
async test(): Promise<Object> {
const testFileName = normalizePath(`${Date.now()}.test`)
const data = await fromCallback(cb => randomBytes(1024 * 1024, cb))
let step = 'write'
try {
await this._outputFile(testFileName, data, { flags: 'wx' })
step = 'read'
const read = await this._readFile(testFileName, { flags: 'r' })
if (!data.equals(read)) {
throw new Error('output and input did not match')
}
return {
success: true,
}
} catch (error) {
return {
success: false,
step,
file: testFileName,
error: error.message || String(error),
}
} finally {
ignoreErrors.call(this._unlink(testFileName))
}
}
async unlink(file: string, { checksum = true }: Object = {}): Promise<void> {
file = normalizePath(file)
if (checksum) {
ignoreErrors.call(this._unlink(checksumFile(file)))
}
await this._unlink(file)
await this._unlink(file).catch(ignoreEnoent)
}
async _unlink (file: mixed): Promise<void> {
async writeFile(
file: string,
data: Data,
{ flags = 'wx' }: { flags?: string } = {}
): Promise<void> {
await this._writeFile(normalizePath(file), data, { flags })
}
// Methods that can be implemented by inheriting classes
async _closeFile(fd: mixed): Promise<void> {
throw new Error('Not implemented')
}
async getSize (file: mixed): Promise<number> {
return this._getSize(file)
async _createOutputStream(file: File, options: Object): Promise<LaxWritable> {
try {
return await this._createWriteStream(file, options)
} catch (error) {
if (typeof file !== 'string' || error.code !== 'ENOENT') {
throw error
}
}
await this._mktree(dirname(file))
return this._createOutputStream(file, options)
}
async _getSize (file: mixed): Promise<number> {
async _createReadStream(file: File, options?: Object): Promise<LaxReadable> {
throw new Error('Not implemented')
}
async _createWriteStream(file: File, options: Object): Promise<LaxWritable> {
throw new Error('Not implemented')
}
// called to finalize the remote
async _forget(): Promise<void> {}
async _getInfo(): Promise<Object> {
return {}
}
async _getSize(file: File): Promise<number> {
throw new Error('Not implemented')
}
async _list(dir: string): Promise<string[]> {
throw new Error('Not implemented')
}
async _mkdir(dir: string): Promise<void> {
throw new Error('Not implemented')
}
async _mktree(dir: string): Promise<void> {
try {
return await this.mkdir(dir)
} catch (error) {
if (error.code !== 'ENOENT') {
throw error
}
}
await this._mktree(dirname(dir))
return this._mktree(dir)
}
async _openFile(path: string, flags: string): Promise<mixed> {
throw new Error('Not implemented')
}
async _outputFile(
file: string,
data: Data,
options: { flags?: string }
): Promise<void> {
try {
return await this._writeFile(file, data, options)
} catch (error) {
if (error.code !== 'ENOENT') {
throw error
}
}
await this._mktree(dirname(file))
return this._outputFile(file, data, options)
}
_read(
file: File,
buffer: Buffer,
position?: number
): Promise<{| bytesRead: number, buffer: Buffer |}> {
throw new Error('Not implemented')
}
_readFile(file: string, options?: Object): Promise<Buffer> {
return this._createReadStream(file, options).then(getStream.buffer)
}
async _rename(oldPath: string, newPath: string) {
throw new Error('Not implemented')
}
async _rmdir(dir: string) {
throw new Error('Not implemented')
}
async _rmtree(dir: string) {
try {
return await this._rmdir(dir)
} catch (error) {
if (error.code !== 'ENOTEMPTY') {
throw error
}
}
const files = await this._list(dir)
await asyncMap(files, file =>
this._unlink(`${dir}/${file}`).catch(error => {
if (error.code === 'EISDIR') {
return this._rmtree(`${dir}/${file}`)
}
throw error
})
)
return this._rmtree(dir)
}
// called to initialize the remote
async _sync(): Promise<void> {}
async _unlink(file: string): Promise<void> {
throw new Error('Not implemented')
}
async _writeFile(
file: string,
data: Data,
options: { flags?: string }
): Promise<void> {
throw new Error('Not implemented')
}
}
function createPrefixWrapperMethods() {
const pPw = PrefixWrapper.prototype
const pRha = RemoteHandlerAbstract.prototype
const {
defineProperty,
getOwnPropertyDescriptor,
prototype: { hasOwnProperty },
} = Object
Object.getOwnPropertyNames(pRha).forEach(name => {
let descriptor, value
if (
hasOwnProperty.call(pPw, name) ||
name[0] === '_' ||
typeof (value = (descriptor = getOwnPropertyDescriptor(pRha, name))
.value) !== 'function'
) {
return
}
descriptor.value = function() {
let path
if (arguments.length !== 0 && typeof (path = arguments[0]) === 'string') {
arguments[0] = this._resolve(path)
}
return value.apply(this._handler, arguments)
}
defineProperty(pPw, name, descriptor)
})
}
createPrefixWrapperMethods()

View File

@@ -0,0 +1,127 @@
/* eslint-env jest */
import { TimeoutError } from 'promise-toolbox'
import AbstractHandler from './abstract'
const TIMEOUT = 10e3
class TestHandler extends AbstractHandler {
constructor(impl) {
super({ url: 'test://' }, { timeout: TIMEOUT })
Object.keys(impl).forEach(method => {
this[`_${method}`] = impl[method]
})
}
}
jest.useFakeTimers()
describe('closeFile()', () => {
it(`throws in case of timeout`, async () => {
const testHandler = new TestHandler({
closeFile: () => new Promise(() => {}),
})
const promise = testHandler.closeFile({ fd: undefined, path: '' })
jest.advanceTimersByTime(TIMEOUT)
await expect(promise).rejects.toThrowError(TimeoutError)
})
})
describe('createOutputStream()', () => {
it(`throws in case of timeout`, async () => {
const testHandler = new TestHandler({
createOutputStream: () => new Promise(() => {}),
})
const promise = testHandler.createOutputStream('File')
jest.advanceTimersByTime(TIMEOUT)
await expect(promise).rejects.toThrowError(TimeoutError)
})
})
describe('createReadStream()', () => {
it(`throws in case of timeout`, async () => {
const testHandler = new TestHandler({
createReadStream: () => new Promise(() => {}),
})
const promise = testHandler.createReadStream('file')
jest.advanceTimersByTime(TIMEOUT)
await expect(promise).rejects.toThrowError(TimeoutError)
})
})
describe('getInfo()', () => {
it('throws in case of timeout', async () => {
const testHandler = new TestHandler({
getInfo: () => new Promise(() => {}),
})
const promise = testHandler.getInfo()
jest.advanceTimersByTime(TIMEOUT)
await expect(promise).rejects.toThrowError(TimeoutError)
})
})
describe('getSize()', () => {
it(`throws in case of timeout`, async () => {
const testHandler = new TestHandler({
getSize: () => new Promise(() => {}),
})
const promise = testHandler.getSize('')
jest.advanceTimersByTime(TIMEOUT)
await expect(promise).rejects.toThrowError(TimeoutError)
})
})
describe('list()', () => {
it(`throws in case of timeout`, async () => {
const testHandler = new TestHandler({
list: () => new Promise(() => {}),
})
const promise = testHandler.list('.')
jest.advanceTimersByTime(TIMEOUT)
await expect(promise).rejects.toThrowError(TimeoutError)
})
})
describe('openFile()', () => {
it(`throws in case of timeout`, async () => {
const testHandler = new TestHandler({
openFile: () => new Promise(() => {}),
})
const promise = testHandler.openFile('path')
jest.advanceTimersByTime(TIMEOUT)
await expect(promise).rejects.toThrowError(TimeoutError)
})
})
describe('rename()', () => {
it(`throws in case of timeout`, async () => {
const testHandler = new TestHandler({
rename: () => new Promise(() => {}),
})
const promise = testHandler.rename('oldPath', 'newPath')
jest.advanceTimersByTime(TIMEOUT)
await expect(promise).rejects.toThrowError(TimeoutError)
})
})
describe('rmdir()', () => {
it(`throws in case of timeout`, async () => {
const testHandler = new TestHandler({
rmdir: () => new Promise(() => {}),
})
const promise = testHandler.rmdir('dir')
jest.advanceTimersByTime(TIMEOUT)
await expect(promise).rejects.toThrowError(TimeoutError)
})
})

View File

@@ -1,6 +1,5 @@
// @flow
// $FlowFixMe
import through2 from 'through2'
import { createHash } from 'crypto'
import { defer, fromEvent } from 'promise-toolbox'
@@ -85,8 +84,8 @@ export const validChecksumOfReadStream = (
callback(
checksum !== expectedChecksum
? new Error(
`Bad checksum (${checksum}), expected: ${expectedChecksum}`
)
`Bad checksum (${checksum}), expected: ${expectedChecksum}`
)
: null
)
}

View File

@@ -1,26 +0,0 @@
/* eslint-env jest */
import rimraf from 'rimraf'
import tmp from 'tmp'
import { fromCallback as pFromCallback } from 'promise-toolbox'
import { getHandler } from '.'
const initialDir = process.cwd()
beforeEach(async () => {
const dir = await pFromCallback(cb => tmp.dir(cb))
process.chdir(dir)
})
afterEach(async () => {
const tmpDir = process.cwd()
process.chdir(initialDir)
await pFromCallback(cb => rimraf(tmpDir, cb))
})
test("fs test doesn't crash", async () => {
const handler = getHandler({ url: 'file://' + process.cwd() })
const result = await handler.test()
expect(result.success).toBeTruthy()
})

View File

@@ -0,0 +1,312 @@
/* eslint-env jest */
import 'dotenv/config'
import asyncIteratorToStream from 'async-iterator-to-stream'
import getStream from 'get-stream'
import { fromCallback } from 'promise-toolbox'
import { pipeline } from 'readable-stream'
import { random } from 'lodash'
import { tmpdir } from 'os'
import { getHandler } from '.'
// https://gist.github.com/julien-f/3228c3f34fdac01ade09
const unsecureRandomBytes = n => {
const bytes = Buffer.alloc(n)
const odd = n & 1
for (let i = 0, m = n - odd; i < m; i += 2) {
bytes.writeUInt16BE((Math.random() * 65536) | 0, i)
}
if (odd) {
bytes.writeUInt8((Math.random() * 256) | 0, n - 1)
}
return bytes
}
const TEST_DATA_LEN = 1024
const TEST_DATA = unsecureRandomBytes(TEST_DATA_LEN)
const createTestDataStream = asyncIteratorToStream(function*() {
yield TEST_DATA
})
const rejectionOf = p =>
p.then(
value => {
throw value
},
reason => reason
)
const handlers = [`file://${tmpdir()}`]
if (process.env.xo_fs_nfs) handlers.push(process.env.xo_fs_nfs)
if (process.env.xo_fs_smb) handlers.push(process.env.xo_fs_smb)
handlers.forEach(url => {
describe(url, () => {
let handler
const testWithFileDescriptor = (path, flags, fn) => {
it('with path', () => fn({ file: path, flags }))
it('with file descriptor', async () => {
const file = await handler.openFile(path, flags)
try {
await fn({ file })
} finally {
await handler.closeFile(file)
}
})
}
beforeAll(async () => {
handler = getHandler({ url }).addPrefix(`xo-fs-tests-${Date.now()}`)
await handler.sync()
})
afterAll(async () => {
await handler.forget()
handler = undefined
})
beforeEach(async () => {
// ensure test dir exists
await handler.mkdir('.')
})
afterEach(async () => {
await handler.rmtree('.')
})
describe('#type', () => {
it('returns the type of the remote', () => {
expect(typeof handler.type).toBe('string')
})
})
describe('#createOutputStream()', () => {
it('creates parent dir if missing', async () => {
const stream = await handler.createOutputStream('dir/file')
await fromCallback(cb => pipeline(createTestDataStream(), stream, cb))
await expect(await handler.readFile('dir/file')).toEqual(TEST_DATA)
})
})
describe('#createReadStream()', () => {
beforeEach(() => handler.outputFile('file', TEST_DATA))
testWithFileDescriptor('file', 'r', async ({ file, flags }) => {
await expect(
await getStream.buffer(
await handler.createReadStream(file, { flags })
)
).toEqual(TEST_DATA)
})
})
describe('#createWriteStream()', () => {
testWithFileDescriptor('file', 'wx', async ({ file, flags }) => {
const stream = await handler.createWriteStream(file, { flags })
await fromCallback(cb => pipeline(createTestDataStream(), stream, cb))
await expect(await handler.readFile('file')).toEqual(TEST_DATA)
})
it('fails if parent dir is missing', async () => {
const error = await rejectionOf(handler.createWriteStream('dir/file'))
expect(error.code).toBe('ENOENT')
})
})
describe('#getInfo()', () => {
let info
beforeAll(async () => {
info = await handler.getInfo()
})
it('should return an object with info', async () => {
expect(typeof info).toBe('object')
})
it('should return correct type of attribute', async () => {
if (info.size !== undefined) {
expect(typeof info.size).toBe('number')
}
if (info.used !== undefined) {
expect(typeof info.used).toBe('number')
}
})
})
describe('#getSize()', () => {
beforeEach(() => handler.outputFile('file', TEST_DATA))
testWithFileDescriptor('file', 'r', async () => {
expect(await handler.getSize('file')).toEqual(TEST_DATA_LEN)
})
})
describe('#list()', () => {
it(`should list the content of folder`, async () => {
await handler.outputFile('file', TEST_DATA)
await expect(await handler.list('.')).toEqual(['file'])
})
it('can prepend the directory to entries', async () => {
await handler.outputFile('dir/file', '')
expect(await handler.list('dir', { prependDir: true })).toEqual([
'/dir/file',
])
})
it('can prepend the directory to entries', async () => {
await handler.outputFile('dir/file', '')
expect(await handler.list('dir', { prependDir: true })).toEqual([
'/dir/file',
])
})
})
describe('#mkdir()', () => {
it('creates a directory', async () => {
await handler.mkdir('dir')
await expect(await handler.list('.')).toEqual(['dir'])
})
it('does not throw on existing directory', async () => {
await handler.mkdir('dir')
await handler.mkdir('dir')
})
it('throws ENOTDIR on existing file', async () => {
await handler.outputFile('file', '')
const error = await rejectionOf(handler.mkdir('file'))
expect(error.code).toBe('ENOTDIR')
})
})
describe('#mktree()', () => {
it('creates a tree of directories', async () => {
await handler.mktree('dir/dir')
await expect(await handler.list('.')).toEqual(['dir'])
await expect(await handler.list('dir')).toEqual(['dir'])
})
it('does not throw on existing directory', async () => {
await handler.mktree('dir/dir')
await handler.mktree('dir/dir')
})
it('throws ENOTDIR on existing file', async () => {
await handler.outputFile('dir/file', '')
const error = await rejectionOf(handler.mktree('dir/file'))
expect(error.code).toBe('ENOTDIR')
})
it('throws ENOTDIR on existing file in path', async () => {
await handler.outputFile('file', '')
const error = await rejectionOf(handler.mktree('file/dir'))
expect(error.code).toBe('ENOTDIR')
})
})
describe('#outputFile()', () => {
it('writes data to a file', async () => {
await handler.outputFile('file', TEST_DATA)
expect(await handler.readFile('file')).toEqual(TEST_DATA)
})
it('throws on existing files', async () => {
await handler.outputFile('file', '')
const error = await rejectionOf(handler.outputFile('file', ''))
expect(error.code).toBe('EEXIST')
})
})
describe('#read()', () => {
beforeEach(() => handler.outputFile('file', TEST_DATA))
const start = random(TEST_DATA_LEN)
const size = random(TEST_DATA_LEN)
testWithFileDescriptor('file', 'r', async ({ file }) => {
const buffer = Buffer.alloc(size)
const result = await handler.read(file, buffer, start)
expect(result.buffer).toBe(buffer)
expect(result).toEqual({
buffer,
bytesRead: Math.min(size, TEST_DATA_LEN - start),
})
})
})
describe('#readFile', () => {
it('returns a buffer containing the contents of the file', async () => {
await handler.outputFile('file', TEST_DATA)
expect(await handler.readFile('file')).toEqual(TEST_DATA)
})
it('throws on missing file', async () => {
const error = await rejectionOf(handler.readFile('file'))
expect(error.code).toBe('ENOENT')
})
})
describe('#rename()', () => {
it(`should rename the file`, async () => {
await handler.outputFile('file', TEST_DATA)
await handler.rename('file', `file2`)
expect(await handler.list('.')).toEqual(['file2'])
expect(await handler.readFile(`file2`)).toEqual(TEST_DATA)
})
})
describe('#rmdir()', () => {
it('should remove an empty directory', async () => {
await handler.mkdir('dir')
await handler.rmdir('dir')
expect(await handler.list('.')).toEqual([])
})
it(`should throw on non-empty directory`, async () => {
await handler.outputFile('dir/file', '')
const error = await rejectionOf(handler.rmdir('.'))
await expect(error.code).toEqual('ENOTEMPTY')
})
it('does not throw on missing directory', async () => {
await handler.rmdir('dir')
})
})
describe('#rmtree', () => {
it(`should remove a directory resursively`, async () => {
await handler.outputFile('dir/file', '')
await handler.rmtree('dir')
expect(await handler.list('.')).toEqual([])
})
})
describe('#test()', () => {
it('tests the remote appears to be working', async () => {
expect(await handler.test()).toEqual({
success: true,
})
})
})
describe('#unlink()', () => {
it(`should remove the file`, async () => {
await handler.outputFile('file', TEST_DATA)
await handler.unlink('file')
await expect(await handler.list('.')).toEqual([])
})
it('does not throw on missing file', async () => {
await handler.unlink('file')
})
})
})
})

View File

@@ -1,20 +1,28 @@
// @flow
import execa from 'execa'
import type RemoteHandler from './abstract'
import RemoteHandlerLocal from './local'
import RemoteHandlerNfs from './nfs'
import RemoteHandlerSmb from './smb'
import RemoteHandlerSmbMount from './smb-mount'
export type { default as RemoteHandler } from './abstract'
export type Remote = { url: string }
const HANDLERS = {
file: RemoteHandlerLocal,
smb: RemoteHandlerSmb,
nfs: RemoteHandlerNfs,
}
export const getHandler = (remote: Remote): RemoteHandler => {
try {
execa.sync('mount.cifs', ['-V'])
HANDLERS.smb = RemoteHandlerSmbMount
} catch (_) {
HANDLERS.smb = RemoteHandlerSmb
}
export const getHandler = (remote: Remote, ...rest: any): RemoteHandler => {
// FIXME: should be done in xo-remote-parser.
const type = remote.url.split('://')[0]
@@ -22,5 +30,5 @@ export const getHandler = (remote: Remote): RemoteHandler => {
if (!Handler) {
throw new Error('Unhandled remote type')
}
return new Handler(remote)
return new Handler(remote, ...rest)
}

View File

@@ -1,56 +1,76 @@
import df from '@sindresorhus/df'
import fs from 'fs-extra'
import { dirname, resolve } from 'path'
import { noop, startsWith } from 'lodash'
import { fromEvent } from 'promise-toolbox'
import RemoteHandlerAbstract from './abstract'
export default class LocalHandler extends RemoteHandlerAbstract {
get type () {
get type() {
return 'file'
}
_getRealPath () {
_getRealPath() {
return this._remote.path
}
_getFilePath (file) {
const realPath = this._getRealPath()
const parts = [realPath]
if (file) {
parts.push(file)
_getFilePath(file) {
return this._getRealPath() + file
}
async _closeFile(fd) {
return fs.close(fd)
}
async _createReadStream(file, options) {
if (typeof file === 'string') {
const stream = fs.createReadStream(this._getFilePath(file), options)
await fromEvent(stream, 'open')
return stream
}
const path = resolve.apply(null, parts)
if (!startsWith(path, realPath)) {
throw new Error('Remote path is unavailable')
return fs.createReadStream('', {
autoClose: false,
...options,
fd: file.fd,
})
}
async _createWriteStream(file, options) {
if (typeof file === 'string') {
const stream = fs.createWriteStream(this._getFilePath(file), options)
await fromEvent(stream, 'open')
return stream
}
return path
return fs.createWriteStream('', {
autoClose: false,
...options,
fd: file.fd,
})
}
async _sync () {
if (this._remote.enabled) {
try {
const path = this._getRealPath()
await fs.ensureDir(path)
await fs.access(path, fs.R_OK | fs.W_OK)
} catch (exc) {
this._remote.enabled = false
this._remote.error = exc.message
}
}
return this._remote
_getInfo() {
return df.file(this._getFilePath('/'))
}
async _forget () {
return noop()
async _getSize(file) {
const stats = await fs.stat(
this._getFilePath(typeof file === 'string' ? file : file.path)
)
return stats.size
}
async _outputFile (file, data, options) {
const path = this._getFilePath(file)
await fs.ensureDir(dirname(path))
await fs.writeFile(path, data, options)
async _list(dir) {
return fs.readdir(this._getFilePath(dir))
}
async _read (file, buffer, position) {
_mkdir(dir) {
return fs.mkdir(this._getFilePath(dir))
}
async _openFile(path, flags) {
return fs.open(this._getFilePath(path), flags)
}
async _read(file, buffer, position) {
const needsClose = typeof file === 'string'
file = needsClose ? await fs.open(this._getFilePath(file), 'r') : file.fd
try {
@@ -68,65 +88,29 @@ export default class LocalHandler extends RemoteHandlerAbstract {
}
}
async _readFile (file, options) {
async _readFile(file, options) {
return fs.readFile(this._getFilePath(file), options)
}
async _rename (oldPath, newPath) {
async _rename(oldPath, newPath) {
return fs.rename(this._getFilePath(oldPath), this._getFilePath(newPath))
}
async _list (dir = '.') {
return fs.readdir(this._getFilePath(dir))
async _rmdir(dir) {
return fs.rmdir(this._getFilePath(dir))
}
async _createReadStream (file, options) {
if (typeof file === 'string') {
return fs.createReadStream(this._getFilePath(file), options)
} else {
return fs.createReadStream('', {
autoClose: false,
...options,
fd: file.fd,
})
}
async _sync() {
const path = this._getRealPath('/')
await fs.ensureDir(path)
await fs.access(path, fs.R_OK | fs.W_OK)
}
async _createOutputStream (file, options) {
if (typeof file === 'string') {
const path = this._getFilePath(file)
await fs.ensureDir(dirname(path))
return fs.createWriteStream(path, options)
} else {
return fs.createWriteStream('', {
autoClose: false,
...options,
fd: file.fd,
})
}
async _unlink(file) {
return fs.unlink(this._getFilePath(file))
}
async _unlink (file) {
return fs.unlink(this._getFilePath(file)).catch(error => {
// do not throw if the file did not exist
if (error == null || error.code !== 'ENOENT') {
throw error
}
})
}
async _getSize (file) {
const stats = await fs.stat(
this._getFilePath(typeof file === 'string' ? file : file.path)
)
return stats.size
}
async _openFile (path, flags) {
return fs.open(this._getFilePath(path), flags)
}
async _closeFile (fd) {
return fs.close(fd)
_writeFile(file, data, { flags }) {
return fs.writeFile(this._getFilePath(file), data, { flag: flags })
}
}

View File

@@ -1,96 +1,20 @@
import execa from 'execa'
import fs from 'fs-extra'
import { forEach } from 'lodash'
import { parse } from 'xo-remote-parser'
import LocalHandler from './local'
import MountHandler from './_mount'
export default class NfsHandler extends LocalHandler {
get type () {
const DEFAULT_NFS_OPTIONS = 'vers=3'
export default class NfsHandler extends MountHandler {
constructor(remote, opts) {
const { host, port, path } = parse(remote.url)
super(remote, opts, {
type: 'nfs',
device: `${host}${port !== undefined ? ':' + port : ''}:${path}`,
options: DEFAULT_NFS_OPTIONS,
})
}
get type() {
return 'nfs'
}
_getRealPath () {
return `/run/xo-server/mounts/${this._remote.id}`
}
async _loadRealMounts () {
let stdout
const mounted = {}
try {
stdout = await execa.stdout('findmnt', [
'-P',
'-t',
'nfs,nfs4',
'--output',
'SOURCE,TARGET',
'--noheadings',
])
const regex = /^SOURCE="([^:]*):(.*)" TARGET="(.*)"$/
forEach(stdout.split('\n'), m => {
if (m) {
const match = regex.exec(m)
mounted[match[3]] = {
host: match[1],
share: match[2],
}
}
})
} catch (exc) {
// When no mounts are found, the call pretends to fail...
if (exc.stderr !== '') {
throw exc
}
}
this._realMounts = mounted
return mounted
}
_matchesRealMount () {
return this._getRealPath() in this._realMounts
}
async _mount () {
await fs.ensureDir(this._getRealPath())
return execa('mount', [
'-t',
'nfs',
'-o',
'vers=3',
`${this._remote.host}:${this._remote.path}`,
this._getRealPath(),
])
}
async _sync () {
await this._loadRealMounts()
if (this._matchesRealMount() && !this._remote.enabled) {
try {
await this._umount(this._remote)
} catch (exc) {
this._remote.enabled = true
this._remote.error = exc.message
}
} else if (!this._matchesRealMount() && this._remote.enabled) {
try {
await this._mount()
} catch (exc) {
this._remote.enabled = false
this._remote.error = exc.message
}
}
return this._remote
}
async _forget () {
try {
await this._umount(this._remote)
} catch (_) {
// We have to go on...
}
}
async _umount (remote) {
await execa('umount', ['--force', this._getRealPath()])
}
}

View File

@@ -0,0 +1,25 @@
import { parse } from 'xo-remote-parser'
import MountHandler from './_mount'
import normalizePath from './_normalizePath'
export default class SmbMountHandler extends MountHandler {
constructor(remote, opts) {
const { domain = 'WORKGROUP', host, password, path, username } = parse(
remote.url
)
super(remote, opts, {
type: 'cifs',
device: '//' + host + normalizePath(path),
options: `domain=${domain}`,
env: {
USER: username,
PASSWD: password,
},
})
}
get type() {
return 'smb'
}
}

View File

@@ -1,217 +1,167 @@
import Smb2 from '@marsaud/smb2-promise'
import { lastly as pFinally } from 'promise-toolbox'
import Smb2 from '@marsaud/smb2'
import RemoteHandlerAbstract from './abstract'
const noop = () => {}
// Normalize the error code for file not found.
const normalizeError = error => {
const wrapError = (error, code) => ({
__proto__: error,
cause: error,
code,
})
const normalizeError = (error, shouldBeDirectory) => {
const { code } = error
return code === 'STATUS_OBJECT_NAME_NOT_FOUND' ||
code === 'STATUS_OBJECT_PATH_NOT_FOUND'
? Object.create(error, {
code: {
configurable: true,
readable: true,
value: 'ENOENT',
writable: true,
},
})
throw code === 'STATUS_DIRECTORY_NOT_EMPTY'
? wrapError(error, 'ENOTEMPTY')
: code === 'STATUS_FILE_IS_A_DIRECTORY'
? wrapError(error, 'EISDIR')
: code === 'STATUS_NOT_A_DIRECTORY'
? wrapError(error, 'ENOTDIR')
: code === 'STATUS_OBJECT_NAME_NOT_FOUND' ||
code === 'STATUS_OBJECT_PATH_NOT_FOUND'
? wrapError(error, 'ENOENT')
: code === 'STATUS_OBJECT_NAME_COLLISION'
? wrapError(error, 'EEXIST')
: code === 'STATUS_NOT_SUPPORTED' || code === 'STATUS_INVALID_PARAMETER'
? wrapError(error, shouldBeDirectory ? 'ENOTDIR' : 'EISDIR')
: error
}
const normalizeDirError = error => normalizeError(error, true)
export default class SmbHandler extends RemoteHandlerAbstract {
constructor (remote) {
super(remote)
this._forget = noop
constructor(remote, opts) {
super(remote, opts)
// defined in _sync()
this._client = undefined
const prefix = this._remote.path
this._prefix = prefix !== '' ? prefix + '\\' : prefix
}
get type () {
get type() {
return 'smb'
}
_getClient (remote) {
return new Smb2({
_getFilePath(file) {
return (
this._prefix +
(typeof file === 'string' ? file : file.path)
.slice(1)
.replace(/\//g, '\\')
)
}
_dirname(file) {
const parts = file.split('\\')
parts.pop()
return parts.join('\\')
}
_closeFile(file) {
return this._client.close(file).catch(normalizeError)
}
_createReadStream(file, options) {
if (typeof file === 'string') {
file = this._getFilePath(file)
} else {
options = { autoClose: false, ...options, fd: file.fd }
file = ''
}
return this._client.createReadStream(file, options).catch(normalizeError)
}
_createWriteStream(file, options) {
if (typeof file === 'string') {
file = this._getFilePath(file)
} else {
options = { autoClose: false, ...options, fd: file.fd }
file = ''
}
return this._client.createWriteStream(file, options).catch(normalizeError)
}
_forget() {
const client = this._client
this._client = undefined
return client.disconnect()
}
_getSize(file) {
return this._client.getSize(this._getFilePath(file)).catch(normalizeError)
}
_list(dir) {
return this._client.readdir(this._getFilePath(dir)).catch(normalizeDirError)
}
_mkdir(dir) {
return this._client.mkdir(this._getFilePath(dir)).catch(normalizeDirError)
}
// TODO: add flags
_openFile(path, flags) {
return this._client
.open(this._getFilePath(path), flags)
.catch(normalizeError)
}
async _read(file, buffer, position) {
const client = this._client
const needsClose = typeof file === 'string'
file = needsClose ? await client.open(this._getFilePath(file)) : file.fd
try {
return await client.read(file, buffer, 0, buffer.length, position)
} catch (error) {
normalizeError(error)
} finally {
if (needsClose) {
await client.close(file)
}
}
}
_readFile(file, options) {
return this._client
.readFile(this._getFilePath(file), options)
.catch(normalizeError)
}
_rename(oldPath, newPath) {
return this._client
.rename(this._getFilePath(oldPath), this._getFilePath(newPath), {
replace: true,
})
.catch(normalizeError)
}
_rmdir(dir) {
return this._client.rmdir(this._getFilePath(dir)).catch(normalizeDirError)
}
_sync() {
const remote = this._remote
this._client = new Smb2({
share: `\\\\${remote.host}`,
domain: remote.domain,
username: remote.username,
password: remote.password,
autoCloseTimeout: 0,
})
// Check access (smb2 does not expose connect in public so far...)
return this.list('.')
}
_getFilePath (file) {
if (file === '.') {
file = undefined
}
let path = this._remote.path !== '' ? this._remote.path : ''
// Ensure remote path is a directory.
if (path !== '' && path[path.length - 1] !== '\\') {
path += '\\'
}
if (file) {
path += file.replace(/\//g, '\\')
}
return path
_unlink(file) {
return this._client.unlink(this._getFilePath(file)).catch(normalizeError)
}
_dirname (file) {
const parts = file.split('\\')
parts.pop()
return parts.join('\\')
_writeFile(file, data, options) {
return this._client
.writeFile(this._getFilePath(file), data, options)
.catch(normalizeError)
}
async _sync () {
if (this._remote.enabled) {
try {
// Check access (smb2 does not expose connect in public so far...)
await this.list()
} catch (error) {
this._remote.enabled = false
this._remote.error = error.message
}
}
return this._remote
}
async _outputFile (file, data, options = {}) {
const client = this._getClient(this._remote)
const path = this._getFilePath(file)
const dir = this._dirname(path)
if (dir) {
await client.ensureDir(dir)
}
return client.writeFile(path, data, options)::pFinally(() => {
client.close()
})
}
async _readFile (file, options = {}) {
const client = this._getClient(this._remote)
let content
try {
content = await client
.readFile(this._getFilePath(file), options)
::pFinally(() => {
client.close()
})
} catch (error) {
throw normalizeError(error)
}
return content
}
async _rename (oldPath, newPath) {
const client = this._getClient(this._remote)
try {
await client
.rename(this._getFilePath(oldPath), this._getFilePath(newPath))
::pFinally(() => {
client.close()
})
} catch (error) {
throw normalizeError(error)
}
}
async _list (dir = '.') {
const client = this._getClient(this._remote)
let list
try {
list = await client.readdir(this._getFilePath(dir))::pFinally(() => {
client.close()
})
} catch (error) {
throw normalizeError(error)
}
return list
}
async _createReadStream (file, options = {}) {
if (typeof file !== 'string') {
file = file.path
}
const client = this._getClient(this._remote)
let stream
try {
// FIXME ensure that options are properly handled by @marsaud/smb2
stream = await client.createReadStream(this._getFilePath(file), options)
stream.on('end', () => client.close())
} catch (error) {
throw normalizeError(error)
}
return stream
}
async _createOutputStream (file, options = {}) {
if (typeof file !== 'string') {
file = file.path
}
const client = this._getClient(this._remote)
const path = this._getFilePath(file)
const dir = this._dirname(path)
let stream
try {
if (dir) {
await client.ensureDir(dir)
}
stream = await client.createWriteStream(path, options) // FIXME ensure that options are properly handled by @marsaud/smb2
} catch (err) {
client.close()
throw err
}
stream.on('finish', () => client.close())
return stream
}
async _unlink (file) {
const client = this._getClient(this._remote)
try {
await client.unlink(this._getFilePath(file))::pFinally(() => {
client.close()
})
} catch (error) {
throw normalizeError(error)
}
}
async _getSize (file) {
const client = await this._getClient(this._remote)
let size
try {
size = await client
.getSize(this._getFilePath(typeof file === 'string' ? file : file.path))
::pFinally(() => {
client.close()
})
} catch (error) {
throw normalizeError(error)
}
return size
}
// this is a fake
async _openFile (path) {
return this._getFilePath(path)
}
async _closeFile (fd) {}
}

View File

@@ -0,0 +1,3 @@
module.exports = require('../../@xen-orchestra/babel-config')(
require('./package.json')
)

View File

@@ -0,0 +1,24 @@
/benchmark/
/benchmarks/
*.bench.js
*.bench.js.map
/examples/
example.js
example.js.map
*.example.js
*.example.js.map
/fixture/
/fixtures/
*.fixture.js
*.fixture.js.map
*.fixtures.js
*.fixtures.js.map
/test/
/tests/
*.spec.js
*.spec.js.map
__snapshots__/

View File

@@ -0,0 +1,160 @@
# @xen-orchestra/log [![Build Status](https://travis-ci.org/vatesfr/xen-orchestra.png?branch=master)](https://travis-ci.org/vatesfr/xen-orchestra)
> ${pkg.description}
## Install
Installation of the [npm package](https://npmjs.org/package/@xen-orchestra/log):
```
> npm install --save @xen-orchestra/log
```
## Usage
Everywhere something should be logged:
```js
import createLogger from '@xen-orchestra/log'
const log = createLogger('my-module')
log.debug('only useful for debugging')
log.info('this information is relevant to the user')
log.warn('something went wrong but did not prevent current action')
log.error('something went wrong')
log.fatal('service/app is going down')
```
Then, at application level, configure the logs are handled:
```js
import { configure, catchGlobalErrors } from '@xen-orchestra/log/configure'
import transportConsole from '@xen-orchestra/log/transports/console'
import transportEmail from '@xen-orchestra/log/transports/email'
const transport = transportEmail({
service: 'gmail',
auth: {
user: 'jane.smith@gmail.com',
pass: 'H&NbECcpXF|pyXe#%ZEb'
},
from: 'jane.smith@gmail.com',
to: [
'jane.smith@gmail.com',
'sam.doe@yahoo.com'
]
})
configure([
{
// if filter is a string, then it is pattern
// (https://github.com/visionmedia/debug#wildcards) which is
// matched against the namespace of the logs
filter: process.env.DEBUG,
transport: transportConsole()
},
{
// only levels >= warn
level: 'warn',
transport
}
])
// send all global errors (uncaught exceptions, warnings, unhandled rejections)
// to this transport
catchGlobalErrors(transport)
```
### Transports
#### Console
```js
import transportConsole from '@xen-orchestra/log/transports/console'
configure(transportConsole())
```
#### Email
Optional dependency:
```
> yarn add nodemailer pretty-format
```
Configuration:
```js
import transportEmail from '@xen-orchestra/log/transports/email'
configure(transportEmail({
service: 'gmail',
auth: {
user: 'jane.smith@gmail.com',
pass: 'H&NbECcpXF|pyXe#%ZEb'
},
from: 'jane.smith@gmail.com',
to: [
'jane.smith@gmail.com',
'sam.doe@yahoo.com'
]
}))
```
#### Syslog
Optional dependency:
```
> yarn add split-host syslog-client
```
Configuration:
```js
import transportSyslog from '@xen-orchestra/log/transports/syslog'
// By default, log to udp://localhost:514
configure(transportSyslog())
// But TCP, a different host, or a different port can be used
configure(transportSyslog('tcp://syslog.company.lan'))
```
## Development
```
# Install dependencies
> yarn
# Run the tests
> yarn test
# Continuously compile
> yarn dev
# Continuously run the tests
> yarn dev-test
# Build for production (automatically called by npm install)
> yarn build
```
## Contributions
Contributions are *very* welcomed, either on the documentation or on
the code.
You may:
- report any [issue](https://github.com/vatesfr/xo-web/issues/)
you've encountered;
- fork and create a pull request.
## License
ISC © [Vates SAS](https://vates.fr)

View File

@@ -0,0 +1 @@
module.exports = require('./dist/configure')

View File

@@ -0,0 +1,53 @@
{
"name": "@xen-orchestra/log",
"version": "0.1.4",
"license": "ISC",
"description": "",
"keywords": [],
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/log",
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
"repository": {
"directory": "@xen-orchestra/log",
"type": "git",
"url": "https://github.com/vatesfr/xen-orchestra.git"
},
"author": {
"name": "Julien Fontanet",
"email": "julien.fontanet@vates.fr"
},
"preferGlobal": false,
"main": "dist/",
"bin": {},
"files": [
"configure.js",
"dist/",
"transports/"
],
"browserslist": [
">2%"
],
"engines": {
"node": ">=4"
},
"dependencies": {
"lodash": "^4.17.4",
"promise-toolbox": "^0.11.0"
},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"babel-plugin-lodash": "^3.3.2",
"cross-env": "^5.1.3",
"index-modules": "^0.3.0",
"rimraf": "^2.6.2"
},
"scripts": {
"build": "cross-env NODE_ENV=production babel --source-maps --out-dir=dist/ src/",
"clean": "rimraf dist/",
"dev": "cross-env NODE_ENV=development babel --watch --source-maps --out-dir=dist/ src/",
"prebuild": "yarn run clean",
"predev": "yarn run prebuild",
"prepublishOnly": "yarn run build"
}
}

View File

@@ -0,0 +1,106 @@
import createConsoleTransport from './transports/console'
import LEVELS, { resolve } from './levels'
import { compileGlobPattern } from './utils'
// ===================================================================
const createTransport = config => {
if (typeof config === 'function') {
return config
}
if (Array.isArray(config)) {
const transports = config.map(createTransport)
const { length } = transports
return function() {
for (let i = 0; i < length; ++i) {
transports[i].apply(this, arguments)
}
}
}
let { filter, transport } = config
const level = resolve(config.level)
if (filter !== undefined) {
if (typeof filter === 'string') {
const re = compileGlobPattern(filter)
filter = log => re.test(log.namespace)
}
const orig = transport
transport = function(log) {
if ((level !== undefined && log.level >= level) || filter(log)) {
return orig.apply(this, arguments)
}
}
} else if (level !== undefined) {
const orig = transport
transport = function(log) {
if (log.level >= level) {
return orig.apply(this, arguments)
}
}
}
return transport
}
const symbol =
typeof Symbol !== 'undefined'
? Symbol.for('@xen-orchestra/log')
: '@@@xen-orchestra/log'
global[symbol] = createTransport({
// display warnings or above, and all that are enabled via DEBUG or
// NODE_DEBUG env
filter: process.env.DEBUG || process.env.NODE_DEBUG,
level: LEVELS.INFO,
transport: createConsoleTransport(),
})
export const configure = config => {
global[symbol] = createTransport(config)
}
// -------------------------------------------------------------------
export const catchGlobalErrors = logger => {
// patch process
const onUncaughtException = error => {
logger.error('uncaught exception', { error })
}
const onUnhandledRejection = error => {
logger.warn('possibly unhandled rejection', { error })
}
const onWarning = error => {
logger.warn('Node warning', { error })
}
process.on('uncaughtException', onUncaughtException)
process.on('unhandledRejection', onUnhandledRejection)
process.on('warning', onWarning)
// patch EventEmitter
const EventEmitter = require('events')
const { prototype } = EventEmitter
const { emit } = prototype
function patchedEmit(event, error) {
if (event === 'error' && this.listenerCount(event) === 0) {
logger.error('unhandled error event', { error })
return false
}
return emit.apply(this, arguments)
}
prototype.emit = patchedEmit
return () => {
process.removeListener('uncaughtException', onUncaughtException)
process.removeListener('unhandledRejection', onUnhandledRejection)
process.removeListener('warning', onWarning)
if (prototype.emit === patchedEmit) {
prototype.emit = emit
}
}
}

View File

@@ -0,0 +1,76 @@
import createTransport from './transports/console'
import LEVELS from './levels'
const symbol =
typeof Symbol !== 'undefined'
? Symbol.for('@xen-orchestra/log')
: '@@@xen-orchestra/log'
if (!(symbol in global)) {
// the default behavior, without requiring `configure` is to avoid
// logging anything unless it's a real error
const transport = createTransport()
global[symbol] = log => log.level > LEVELS.WARN && transport(log)
}
// -------------------------------------------------------------------
function Log(data, level, namespace, message, time) {
this.data = data
this.level = level
this.namespace = namespace
this.message = message
this.time = time
}
function Logger(namespace) {
this._namespace = namespace
// bind all logging methods
for (const name in LEVELS) {
const lowerCase = name.toLowerCase()
this[lowerCase] = this[lowerCase].bind(this)
}
}
const { prototype } = Logger
for (const name in LEVELS) {
const level = LEVELS[name]
prototype[name.toLowerCase()] = function(message, data) {
if (typeof message !== 'string') {
if (message instanceof Error) {
data = { error: message }
;({ message = 'an error has occurred' } = message)
} else {
return this.warn('incorrect value passed to logger', {
level,
value: message,
})
}
}
global[symbol](new Log(data, level, this._namespace, message, new Date()))
}
}
prototype.wrap = function(message, fn) {
const logger = this
const warnAndRethrow = error => {
logger.warn(message, { error })
throw error
}
return function() {
try {
const result = fn.apply(this, arguments)
const then = result != null && result.then
return typeof then === 'function'
? then.call(result, warnAndRethrow)
: result
} catch (error) {
warnAndRethrow(error)
}
}
}
const createLogger = namespace => new Logger(namespace)
export { createLogger as default }

View File

@@ -0,0 +1,24 @@
const LEVELS = Object.create(null)
export { LEVELS as default }
// https://github.com/trentm/node-bunyan#levels
LEVELS.FATAL = 60 // service/app is going down
LEVELS.ERROR = 50 // fatal for current action
LEVELS.WARN = 40 // something went wrong but it's not fatal
LEVELS.INFO = 30 // detail on unusual but normal operation
LEVELS.DEBUG = 20
export const NAMES = Object.create(null)
for (const name in LEVELS) {
NAMES[LEVELS[name]] = name
}
export const resolve = level => {
if (typeof level === 'string') {
level = LEVELS[level.toUpperCase()]
}
return level
}
Object.freeze(LEVELS)
Object.freeze(NAMES)

View File

@@ -0,0 +1,32 @@
/* eslint-env jest */
import { forEach, isInteger } from 'lodash'
import LEVELS, { NAMES, resolve } from './levels'
describe('LEVELS', () => {
it('maps level names to their integer values', () => {
forEach(LEVELS, (value, name) => {
expect(isInteger(value)).toBe(true)
})
})
})
describe('NAMES', () => {
it('maps level values to their names', () => {
forEach(LEVELS, (value, name) => {
expect(NAMES[value]).toBe(name)
})
})
})
describe('resolve()', () => {
it('returns level values either from values or names', () => {
forEach(LEVELS, value => {
expect(resolve(value)).toBe(value)
})
forEach(NAMES, (name, value) => {
expect(resolve(name)).toBe(+value)
})
})
})

View File

@@ -0,0 +1,24 @@
import LEVELS, { NAMES } from '../levels'
// Bind console methods (necessary for browsers)
const debugConsole = console.log.bind(console)
const infoConsole = console.info.bind(console)
const warnConsole = console.warn.bind(console)
const errorConsole = console.error.bind(console)
const { ERROR, INFO, WARN } = LEVELS
const consoleTransport = ({ data, level, namespace, message, time }) => {
const fn =
level < INFO
? debugConsole
: level < WARN
? infoConsole
: level < ERROR
? warnConsole
: errorConsole
fn('%s - %s - [%s] %s', time.toISOString(), namespace, NAMES[level], message)
data != null && fn(data)
}
export default () => consoleTransport

View File

@@ -0,0 +1,68 @@
import fromCallback from 'promise-toolbox/fromCallback'
import prettyFormat from 'pretty-format' // eslint-disable-line node/no-extraneous-import
import { createTransport } from 'nodemailer' // eslint-disable-line node/no-extraneous-import
import { evalTemplate, required } from '../utils'
import { NAMES } from '../levels'
export default ({
// transport options (https://nodemailer.com/smtp/)
auth,
authMethod,
host,
ignoreTLS,
port,
proxy,
requireTLS,
secure,
service,
tls,
// message options (https://nodemailer.com/message/)
bcc,
cc,
from = required('from'),
to = required('to'),
subject = '[{{level}} - {{namespace}}] {{time}} {{message}}',
}) => {
const transporter = createTransport(
{
auth,
authMethod,
host,
ignoreTLS,
port,
proxy,
requireTLS,
secure,
service,
tls,
disableFileAccess: true,
disableUrlAccess: true,
},
{
bcc,
cc,
from,
to,
}
)
return log =>
fromCallback(cb =>
transporter.sendMail(
{
subject: evalTemplate(subject, key =>
key === 'level'
? NAMES[log.level]
: key === 'time'
? log.time.toISOString()
: log[key]
),
text: prettyFormat(log.data),
},
cb
)
)
}

View File

@@ -0,0 +1,7 @@
export default () => {
const memoryLogger = log => {
logs.push(log)
}
const logs = (memoryLogger.logs = [])
return memoryLogger
}

View File

@@ -0,0 +1,42 @@
import fromCallback from 'promise-toolbox/fromCallback'
import splitHost from 'split-host' // eslint-disable-line node/no-extraneous-import node/no-missing-import
import startsWith from 'lodash/startsWith'
import { createClient, Facility, Severity, Transport } from 'syslog-client' // eslint-disable-line node/no-extraneous-import node/no-missing-import
import LEVELS from '../levels'
// https://github.com/paulgrove/node-syslog-client#syslogseverity
const LEVEL_TO_SEVERITY = {
[LEVELS.FATAL]: Severity.Critical,
[LEVELS.ERROR]: Severity.Error,
[LEVELS.WARN]: Severity.Warning,
[LEVELS.INFO]: Severity.Informational,
[LEVELS.DEBUG]: Severity.Debug,
}
const facility = Facility.User
export default target => {
const opts = {}
if (target !== undefined) {
if (startsWith(target, 'tcp://')) {
target = target.slice(6)
opts.transport = Transport.Tcp
} else if (startsWith(target, 'udp://')) {
target = target.slice(6)
opts.transport = Transport.Udp
}
;({ host: target, port: opts.port } = splitHost(target))
}
const client = createClient(target, opts)
return log =>
fromCallback(cb =>
client.log(log.message, {
facility,
severity: LEVEL_TO_SEVERITY[log.level],
})
)
}

View File

@@ -0,0 +1,63 @@
import escapeRegExp from 'lodash/escapeRegExp'
// ===================================================================
const TPL_RE = /\{\{(.+?)\}\}/g
export const evalTemplate = (tpl, data) => {
const getData =
typeof data === 'function' ? (_, key) => data(key) : (_, key) => data[key]
return tpl.replace(TPL_RE, getData)
}
// -------------------------------------------------------------------
const compileGlobPatternFragment = pattern =>
pattern
.split('*')
.map(escapeRegExp)
.join('.*')
export const compileGlobPattern = pattern => {
const no = []
const yes = []
pattern.split(/[\s,]+/).forEach(pattern => {
if (pattern[0] === '-') {
no.push(pattern.slice(1))
} else {
yes.push(pattern)
}
})
const raw = ['^']
if (no.length !== 0) {
raw.push('(?!', no.map(compileGlobPatternFragment).join('|'), ')')
}
if (yes.length !== 0) {
raw.push('(?:', yes.map(compileGlobPatternFragment).join('|'), ')')
} else {
raw.push('.*')
}
raw.push('$')
return new RegExp(raw.join(''))
}
// -------------------------------------------------------------------
export const required = name => {
throw new Error(`missing required arg ${name}`)
}
// -------------------------------------------------------------------
export const serializeError = error => ({
...error, // Copy enumerable properties.
code: error.code,
message: error.message,
name: error.name,
stack: error.stack,
})

View File

@@ -0,0 +1,13 @@
/* eslint-env jest */
import { compileGlobPattern } from './utils'
describe('compileGlobPattern()', () => {
it('works', () => {
const re = compileGlobPattern('foo, ba*, -bar')
expect(re.test('foo')).toBe(true)
expect(re.test('bar')).toBe(false)
expect(re.test('baz')).toBe(true)
expect(re.test('qux')).toBe(false)
})
})

View File

@@ -0,0 +1 @@
module.exports = require('../dist/transports/console.js')

View File

@@ -0,0 +1 @@
module.exports = require('../dist/transports/email.js')

View File

@@ -0,0 +1 @@
module.exports = require('../dist/transports/memory.js')

View File

@@ -0,0 +1 @@
module.exports = require('../dist/transports/syslog.js')

View File

@@ -0,0 +1,3 @@
module.exports = require('../../@xen-orchestra/babel-config')(
require('./package.json')
)

View File

@@ -0,0 +1,24 @@
/benchmark/
/benchmarks/
*.bench.js
*.bench.js.map
/examples/
example.js
example.js.map
*.example.js
*.example.js.map
/fixture/
/fixtures/
*.fixture.js
*.fixture.js.map
*.fixtures.js
*.fixtures.js.map
/test/
/tests/
*.spec.js
*.spec.js.map
__snapshots__/

View File

@@ -0,0 +1,49 @@
# ${pkg.name} [![Build Status](https://travis-ci.org/${pkg.shortGitHubPath}.png?branch=master)](https://travis-ci.org/${pkg.shortGitHubPath})
> ${pkg.description}
## Install
Installation of the [npm package](https://npmjs.org/package/${pkg.name}):
```
> npm install --save ${pkg.name}
```
## Usage
**TODO**
## Development
```
# Install dependencies
> yarn
# Run the tests
> yarn test
# Continuously compile
> yarn dev
# Continuously run the tests
> yarn dev-test
# Build for production (automatically called by npm install)
> yarn build
```
## Contributions
Contributions are *very* welcomed, either on the documentation or on
the code.
You may:
- report any [issue](${pkg.bugs})
you've encountered;
- fork and create a pull request.
## License
${pkg.license} © [${pkg.author.name}](${pkg.author.url})

View File

@@ -0,0 +1,50 @@
{
"name": "@xen-orchestra/mixin",
"version": "0.0.0",
"license": "ISC",
"description": "",
"keywords": [],
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/mixin",
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
"repository": {
"directory": "@xen-orchestra/mixin",
"type": "git",
"url": "https://github.com/vatesfr/xen-orchestra.git"
},
"author": {
"name": "Julien Fontanet",
"email": "julien.fontanet@vates.fr"
},
"preferGlobal": false,
"main": "dist/",
"bin": {},
"files": [
"dist/"
],
"browserslist": [
">2%"
],
"engines": {
"node": ">=6"
},
"dependencies": {
"bind-property-descriptor": "^1.0.0"
},
"devDependencies": {
"@babel/cli": "^7.0.0",
"@babel/core": "^7.0.0",
"@babel/preset-env": "^7.0.0",
"babel-plugin-dev": "^1.0.0",
"babel-plugin-lodash": "^3.3.2",
"cross-env": "^5.1.3",
"rimraf": "^2.6.2"
},
"scripts": {
"build": "cross-env NODE_ENV=production babel --source-maps --out-dir=dist/ src/",
"clean": "rimraf dist/",
"dev": "cross-env NODE_ENV=development babel --watch --source-maps --out-dir=dist/ src/",
"prebuild": "yarn run clean",
"predev": "yarn run prebuild",
"prepublishOnly": "yarn run build"
}
}

View File

@@ -0,0 +1,130 @@
import { getBoundPropertyDescriptor } from 'bind-property-descriptor'
// ===================================================================
const { defineProperties, getOwnPropertyDescriptor } = Object
const isIgnoredProperty = name => name[0] === '_' || name === 'constructor'
const IGNORED_STATIC_PROPERTIES = {
__proto__: null,
arguments: true,
caller: true,
length: true,
name: true,
prototype: true,
}
const isIgnoredStaticProperty = name => name in IGNORED_STATIC_PROPERTIES
const ownKeys =
(typeof Reflect !== 'undefined' && Reflect.ownKeys) ||
(({ getOwnPropertyNames: names, getOwnPropertySymbols: symbols }) =>
symbols !== undefined ? obj => names(obj).concat(symbols(obj)) : names)(
Object
)
// -------------------------------------------------------------------
const mixin = Mixins => Class => {
if (__DEV__ && !Array.isArray(Mixins)) {
throw new TypeError('Mixins should be an array')
}
const { name } = Class
// Copy properties of plain object mix-ins to the prototype.
{
const allMixins = Mixins
Mixins = []
const { prototype } = Class
const descriptors = { __proto__: null }
allMixins.forEach(Mixin => {
if (typeof Mixin === 'function') {
Mixins.push(Mixin)
return
}
for (const prop of ownKeys(Mixin)) {
if (__DEV__ && prop in prototype) {
throw new Error(`${name}#${prop} is already defined`)
}
;(descriptors[prop] = getOwnPropertyDescriptor(
Mixin,
prop
)).enumerable = false // Object methods are enumerable but class methods are not.
}
})
defineProperties(prototype, descriptors)
}
const n = Mixins.length
function DecoratedClass(...args) {
const instance = new Class(...args)
for (let i = 0; i < n; ++i) {
const Mixin = Mixins[i]
const { prototype } = Mixin
const mixinInstance = new Mixin(instance, ...args)
const descriptors = { __proto__: null }
const props = ownKeys(prototype)
for (let j = 0, m = props.length; j < m; ++j) {
const prop = props[j]
if (isIgnoredProperty(prop)) {
continue
}
if (prop in instance) {
throw new Error(`${name}#${prop} is already defined`)
}
descriptors[prop] = getBoundPropertyDescriptor(
prototype,
prop,
mixinInstance
)
}
defineProperties(instance, descriptors)
}
return instance
}
// Copy original and mixed-in static properties on Decorator class.
const descriptors = { __proto__: null }
ownKeys(Class).forEach(prop => {
let descriptor
if (
!(
isIgnoredStaticProperty(prop) &&
// if they already exist...
(descriptor = getOwnPropertyDescriptor(DecoratedClass, prop)) !==
undefined &&
// and are not configurable.
!descriptor.configurable
)
) {
descriptors[prop] = getOwnPropertyDescriptor(Class, prop)
}
})
Mixins.forEach(Mixin => {
ownKeys(Mixin).forEach(prop => {
if (isIgnoredStaticProperty(prop)) {
return
}
if (__DEV__ && prop in descriptors) {
throw new Error(`${name}.${prop} is already defined`)
}
descriptors[prop] = getOwnPropertyDescriptor(Mixin, prop)
})
})
defineProperties(DecoratedClass, descriptors)
return DecoratedClass
}
export { mixin as default }

View File

@@ -1,6 +1,549 @@
# ChangeLog
## *next*
## **5.32.0** (2019-02-28)
### Enhancements
- [VM migration] Display same-pool hosts first in the selector [#3262](https://github.com/vatesfr/xen-orchestra/issues/3262) (PR [#3890](https://github.com/vatesfr/xen-orchestra/pull/3890))
- [Home/VM] Sort VM by start time [#3955](https://github.com/vatesfr/xen-orchestra/issues/3955) (PR [#3970](https://github.com/vatesfr/xen-orchestra/pull/3970))
- [Editable fields] Unfocusing (clicking outside) submits the change instead of canceling (PR [#3980](https://github.com/vatesfr/xen-orchestra/pull/3980))
- [Network] Dedicated page for network creation [#3895](https://github.com/vatesfr/xen-orchestra/issues/3895) (PR [#3906](https://github.com/vatesfr/xen-orchestra/pull/3906))
- [Logs] Add button to download the log [#3957](https://github.com/vatesfr/xen-orchestra/issues/3957) (PR [#3985](https://github.com/vatesfr/xen-orchestra/pull/3985))
- [Continuous Replication] Share full copy between schedules [#3973](https://github.com/vatesfr/xen-orchestra/issues/3973) (PR [#3995](https://github.com/vatesfr/xen-orchestra/pull/3995))
- [Backup] Ability to backup XO configuration and pool metadata [#808](https://github.com/vatesfr/xen-orchestra/issues/808) [#3501](https://github.com/vatesfr/xen-orchestra/issues/3501) (PR [#3912](https://github.com/vatesfr/xen-orchestra/pull/3912))
### Bug fixes
- [Host] Fix multipathing status for XenServer < 7.5 [#3956](https://github.com/vatesfr/xen-orchestra/issues/3956) (PR [#3961](https://github.com/vatesfr/xen-orchestra/pull/3961))
- [Home/VM] Show creation date of the VM on if it available [#3953](https://github.com/vatesfr/xen-orchestra/issues/3953) (PR [#3959](https://github.com/vatesfr/xen-orchestra/pull/3959))
- [Notifications] Fix invalid notifications when not registered (PR [#3966](https://github.com/vatesfr/xen-orchestra/pull/3966))
- [Import] Fix import of some OVA files [#3962](https://github.com/vatesfr/xen-orchestra/issues/3962) (PR [#3974](https://github.com/vatesfr/xen-orchestra/pull/3974))
- [Servers] Fix *already connected error* after a server has been removed during connection [#3976](https://github.com/vatesfr/xen-orchestra/issues/3976) (PR [#3977](https://github.com/vatesfr/xen-orchestra/pull/3977))
- [Backup] Fix random _mount_ issues with NFS/SMB remotes [#3973](https://github.com/vatesfr/xen-orchestra/issues/3973) (PR [#4003](https://github.com/vatesfr/xen-orchestra/pull/4003))
### Released packages
- @xen-orchestra/fs v0.7.0
- xen-api v0.24.3
- xoa-updater v0.15.2
- xo-server v5.36.0
- xo-web v5.36.0
## **5.31.2** (2019-02-08)
### Enhancements
- [Home] Set description on bulk snapshot [#3925](https://github.com/vatesfr/xen-orchestra/issues/3925) (PR [#3933](https://github.com/vatesfr/xen-orchestra/pull/3933))
- Work-around the XenServer issue when `VBD#VDI` is an empty string instead of an opaque reference (PR [#3950](https://github.com/vatesfr/xen-orchestra/pull/3950))
- [VDI migration] Retry when XenServer fails with `TOO_MANY_STORAGE_MIGRATES` (PR [#3940](https://github.com/vatesfr/xen-orchestra/pull/3940))
- [VM]
- [General] The creation date of the VM is now visible [#3932](https://github.com/vatesfr/xen-orchestra/issues/3932) (PR [#3947](https://github.com/vatesfr/xen-orchestra/pull/3947))
- [Disks] Display device name [#3902](https://github.com/vatesfr/xen-orchestra/issues/3902) (PR [#3946](https://github.com/vatesfr/xen-orchestra/pull/3946))
- [VM Snapshotting]
- Detect and destroy broken quiesced snapshot left by XenServer [#3936](https://github.com/vatesfr/xen-orchestra/issues/3936) (PR [#3937](https://github.com/vatesfr/xen-orchestra/pull/3937))
- Retry twice after a 1 minute delay if quiesce failed [#3938](https://github.com/vatesfr/xen-orchestra/issues/3938) (PR [#3952](https://github.com/vatesfr/xen-orchestra/pull/3952))
### Bug fixes
- [Import] Fix import of big OVA files
- [Host] Show the host's memory usage instead of the sum of the VMs' memory usage (PR [#3924](https://github.com/vatesfr/xen-orchestra/pull/3924))
- [SAML] Make `AssertionConsumerServiceURL` matches the callback URL
- [Backup NG] Correctly delete broken VHD chains [#3875](https://github.com/vatesfr/xen-orchestra/issues/3875) (PR [#3939](https://github.com/vatesfr/xen-orchestra/pull/3939))
- [Remotes] Don't ignore `mount` options [#3935](https://github.com/vatesfr/xen-orchestra/issues/3935) (PR [#3931](https://github.com/vatesfr/xen-orchestra/pull/3931))
### Released packages
- xen-api v0.24.2
- @xen-orchestra/fs v0.6.1
- xo-server-auth-saml v0.5.3
- xo-server v5.35.0
- xo-web v5.35.0
## **5.31.0** (2019-01-31)
### Enhancements
- [Backup NG] Restore logs moved to restore tab [#3772](https://github.com/vatesfr/xen-orchestra/issues/3772) (PR [#3802](https://github.com/vatesfr/xen-orchestra/pull/3802))
- [Remotes] New SMB implementation that provides better stability and performance [#2257](https://github.com/vatesfr/xen-orchestra/issues/2257) (PR [#3708](https://github.com/vatesfr/xen-orchestra/pull/3708))
- [VM/advanced] ACL management from VM view [#3040](https://github.com/vatesfr/xen-orchestra/issues/3040) (PR [#3774](https://github.com/vatesfr/xen-orchestra/pull/3774))
- [VM / snapshots] Ability to save the VM memory [#3795](https://github.com/vatesfr/xen-orchestra/issues/3795) (PR [#3812](https://github.com/vatesfr/xen-orchestra/pull/3812))
- [Backup NG / Health] Show number of lone snapshots in tab label [#3500](https://github.com/vatesfr/xen-orchestra/issues/3500) (PR [#3824](https://github.com/vatesfr/xen-orchestra/pull/3824))
- [Login] Add autofocus on username input on login page [#3835](https://github.com/vatesfr/xen-orchestra/issues/3835) (PR [#3836](https://github.com/vatesfr/xen-orchestra/pull/3836))
- [Home/VM] Bulk snapshot: specify snapshots' names [#3778](https://github.com/vatesfr/xen-orchestra/issues/3778) (PR [#3787](https://github.com/vatesfr/xen-orchestra/pull/3787))
- [Remotes] Show free space and disk usage on remote [#3055](https://github.com/vatesfr/xen-orchestra/issues/3055) (PR [#3767](https://github.com/vatesfr/xen-orchestra/pull/3767))
- [New SR] Add tooltip for reattach action button [#3845](https://github.com/vatesfr/xen-orchestra/issues/3845) (PR [#3852](https://github.com/vatesfr/xen-orchestra/pull/3852))
- [VM migration] Display hosts' free memory [#3264](https://github.com/vatesfr/xen-orchestra/issues/3264) (PR [#3832](https://github.com/vatesfr/xen-orchestra/pull/3832))
- [Plugins] New field to filter displayed plugins (PR [#3832](https://github.com/vatesfr/xen-orchestra/pull/3871))
- Ability to copy ID of "unknown item"s [#3833](https://github.com/vatesfr/xen-orchestra/issues/3833) (PR [#3856](https://github.com/vatesfr/xen-orchestra/pull/3856))
- [Cloud-Init] switch config drive type to `nocloud` to prepare for the passing of network config (PR [#3877](https://github.com/vatesfr/xen-orchestra/pull/3877))
- [UI] Show pool name next to templates' names [#3894](https://github.com/vatesfr/xen-orchestra/issues/3894) (PR [#3896](https://github.com/vatesfr/xen-orchestra/pull/3896))
- [Backup NG] Support zstd compression for full backups [#3773](https://github.com/vatesfr/xen-orchestra/issues/3773) (PR [#3883](https://github.com/vatesfr/xen-orchestra/pull/3883))
- [VM] Ability to copy a VM with zstd compression [#3773](https://github.com/vatesfr/xen-orchestra/issues/3773) (PR [#3889](https://github.com/vatesfr/xen-orchestra/pull/3889))
- [VM & Host] "Pool > Host" breadcrumb at the top of the page (PR [#3898](https://github.com/vatesfr/xen-orchestra/pull/3898))
- [Hosts] Ability to enable/disable host multipathing [#3659](https://github.com/vatesfr/xen-orchestra/issues/3659) (PR [#3865](https://github.com/vatesfr/xen-orchestra/pull/3865))
- [Login] Add OTP authentication [#2044](https://github.com/vatesfr/xen-orchestra/issues/2044) (PR [#3879](https://github.com/vatesfr/xen-orchestra/pull/3879))
- [Notifications] New notification page to provide important information about XOA (PR [#3904](https://github.com/vatesfr/xen-orchestra/pull/3904))
- [VM] Ability to export a VM with zstd compression [#3773](https://github.com/vatesfr/xen-orchestra/issues/3773) (PR [#3891](https://github.com/vatesfr/xen-orchestra/pull/3891))
- [Host/network] Display PIF speed [#3887](https://github.com/vatesfr/xen-orchestra/issues/3887) (PR [#3901](https://github.com/vatesfr/xen-orchestra/pull/3901))
- [SR] Display iscsi paths and mark the SR with a yellow dot if one path is not available. [#3659](https://github.com/vatesfr/xen-orchestra/issues/3659) (PR [#3829](https://github.com/vatesfr/xen-orchestra/pull/3829))
- [UI] Unifies the Signin buttons (PR [#3913](https://github.com/vatesfr/xen-orchestra/pull/3913))
- [Settings/remotes] NFS: display default option on placeholder [#3631](https://github.com/vatesfr/xen-orchestra/issues/3631) (PR [#3921](https://github.com/vatesfr/xen-orchestra/pull/3921))
- [VM/advanced] Ability to pin vCPU to physical cores [#3241](https://github.com/vatesfr/xen-orchestra/issues/3241) (PR [#3254](https://github.com/vatesfr/xen-orchestra/pull/3254))
### Bug fixes
- [Self] Display sorted Resource Sets [#3818](https://github.com/vatesfr/xen-orchestra/issues/3818) (PR [#3823](https://github.com/vatesfr/xen-orchestra/pull/3823))
- [Servers] Correctly report connecting status (PR [#3838](https://github.com/vatesfr/xen-orchestra/pull/3838))
- [Servers] Fix cannot reconnect to a server after connection has been lost [#3839](https://github.com/vatesfr/xen-orchestra/issues/3839) (PR [#3841](https://github.com/vatesfr/xen-orchestra/pull/3841))
- [New VM] Fix `NO_HOSTS_AVAILABLE()` error when creating a VM on a local SR from template on another local SR [#3084](https://github.com/vatesfr/xen-orchestra/issues/3084) (PR [#3827](https://github.com/vatesfr/xen-orchestra/pull/3827))
- [Backup NG] Fix typo in the form [#3854](https://github.com/vatesfr/xen-orchestra/issues/3854) (PR [#3855](https://github.com/vatesfr/xen-orchestra/pull/3855))
- [New SR] No warning when creating a NFS SR on a path that is already used as NFS SR [#3844](https://github.com/vatesfr/xen-orchestra/issues/3844) (PR [#3851](https://github.com/vatesfr/xen-orchestra/pull/3851))
- [New SR] No redirection if the SR creation failed or canceled [#3843](https://github.com/vatesfr/xen-orchestra/issues/3843) (PR [#3853](https://github.com/vatesfr/xen-orchestra/pull/3853))
- [Home] Fix two tabs opened by middle click in Firefox [#3450](https://github.com/vatesfr/xen-orchestra/issues/3450) (PR [#3825](https://github.com/vatesfr/xen-orchestra/pull/3825))
- [XOA] Enable downgrade for ending trial (PR [#3867](https://github.com/vatesfr/xen-orchestra/pull/3867))
- [OVA import] allow import of big files [#3468](https://github.com/vatesfr/xen-orchestra/issues/3468) (PR [#3504](https://github.com/vatesfr/xen-orchestra/pull/3504))
- [Backup NG] Smart settings not saved when editing a backup job [#3885](https://github.com/vatesfr/xen-orchestra/issues/3885) (PR [#3886](https://github.com/vatesfr/xen-orchestra/pull/3886))
- [VM/snapshot] New snapshot with memory: fix "invalid parameters" error (PR [#3903](https://github.com/vatesfr/xen-orchestra/pull/3903))
- [VM creation] Broken CloudInit config drive when VM created on local SR
- [Legacy Backup] Fix error when restoring a backup
- [Home] Fix `user.getAll` error when user is not admin [#3573](https://github.com/vatesfr/xen-orchestra/issues/3573) (PR [#3918](https://github.com/vatesfr/xen-orchestra/pull/3918))
- [Backup NG] Fix restore issue when a disk has grown [#3910](https://github.com/vatesfr/xen-orchestra/issues/3910) (PR [#3920](https://github.com/vatesfr/xen-orchestra/pull/3920))
- [Backup NG] Delete _importing_ VMs due to interrupted CR/DR (PR [#3923](https://github.com/vatesfr/xen-orchestra/pull/3923))
### Released packages
- vhd-cli v0.2.0
- @xen-orchestra/fs v0.6.0
- vhd-lib v0.5.1
- xoa-updater v0.15.0
- xen-api v0.24.1
- xo-vmdk-to-vhd v0.1.6
- xo-server v5.34.0
- xo-web v5.34.0
## **5.30.0** (2018-12-20)
### Enhancements
- [Users] Display user groups [#3719](https://github.com/vatesfr/xen-orchestra/issues/3719) (PR [#3740](https://github.com/vatesfr/xen-orchestra/pull/3740))
- [VDI] Display VDI's SR [3021](https://github.com/vatesfr/xen-orchestra/issues/3021) (PR [#3285](https://github.com/vatesfr/xen-orchestra/pull/3285))
- [Health, VM/disks] Display SR's container [#3021](https://github.com/vatesfr/xen-orchestra/issues/3021) (PRs [#3747](https://github.com/vatesfr/xen-orchestra/pull/3747), [#3751](https://github.com/vatesfr/xen-orchestra/pull/3751))
- [Servers] Auto-connect to ejected host [#2238](https://github.com/vatesfr/xen-orchestra/issues/2238) (PR [#3738](https://github.com/vatesfr/xen-orchestra/pull/3738))
- [Backup NG] Add "XOSAN" in excluded tags by default [#2128](https://github.com/vatesfr/xen-orchestra/issues/3563) (PR [#3559](https://github.com/vatesfr/xen-orchestra/pull/3563))
- [VM] add tooltip for VM status icon [#3749](https://github.com/vatesfr/xen-orchestra/issues/3749) (PR [#3765](https://github.com/vatesfr/xen-orchestra/pull/3765))
- [New XOSAN] Improve view and possibility to sort SRs by name/size/free space [#2416](https://github.com/vatesfr/xen-orchestra/issues/2416) (PR [#3691](https://github.com/vatesfr/xen-orchestra/pull/3691))
- [Backup NG] Disable HA on replicated VM (CR, DR) [#2359](https://github.com/vatesfr/xen-orchestra/issues/2359) (PR [#3755](https://github.com/vatesfr/xen-orchestra/pull/3755))
- [Backup NG] Display the last run status for each schedule with the possibility to show the associated log [#3769](https://github.com/vatesfr/xen-orchestra/issues/3769) (PR [#3779](https://github.com/vatesfr/xen-orchestra/pull/3779))
- [Backup NG] Add a link to the documentation [#3789](https://github.com/vatesfr/xen-orchestra/issues/3789) (PR [#3790](https://github.com/vatesfr/xen-orchestra/pull/3790))
- [Backup NG] Ability to copy schedule/job id to the clipboard [#3753](https://github.com/vatesfr/xen-orchestra/issues/3753) (PR [#3791](https://github.com/vatesfr/xen-orchestra/pull/3791))
- [Backup NG / logs] Merge the job log status with the display details button [#3797](https://github.com/vatesfr/xen-orchestra/issues/3797) (PR [#3800](https://github.com/vatesfr/xen-orchestra/pull/3800))
- [XOA] Notification banner when XOA is not registered [#3803](https://github.com/vatesfr/xen-orchestra/issues/3803) (PR [#3808](https://github.com/vatesfr/xen-orchestra/pull/3808))
### Bug fixes
- [Home/SRs] Fixed SR status for non admin users [#2204](https://github.com/vatesfr/xen-orchestra/issues/2204) (PR [#3742](https://github.com/vatesfr/xen-orchestra/pull/3742))
- [Servers] Fix occasional "server's pool already connected" errors when pool is not connected (PR [#3782](https://github.com/vatesfr/xen-orchestra/pull/3782))
- [Self] Fix missing objects when the self service view is the first one to be loaded when opening XO [#2689](https://github.com/vatesfr/xen-orchestra/issues/2689) (PR [#3096](https://github.com/vatesfr/xen-orchestra/pull/3096))
### Released packages
- @xen-orchestra/fs v0.5.0
- xen-api v0.23.0
- xo-acl-resolver v0.4.1
- xo-server v5.32.0
- xo-web v5.32.0
## **5.29.0** (2018-11-29)
### Enhancements
- [Perf alert] Ability to trigger an alarm if a host/VM/SR usage value is below the threshold [#3612](https://github.com/vatesfr/xen-orchestra/issues/3612) (PR [#3675](https://github.com/vatesfr/xen-orchestra/pull/3675))
- [Home/VMs] Display pool's name [#2226](https://github.com/vatesfr/xen-orchestra/issues/2226) (PR [#3709](https://github.com/vatesfr/xen-orchestra/pull/3709))
- [Servers] Prevent new connection if pool is already connected [#2238](https://github.com/vatesfr/xen-orchestra/issues/2238) (PR [#3724](https://github.com/vatesfr/xen-orchestra/pull/3724))
- [VM] Pause (like Suspend but doesn't copy RAM on disk) [#3727](https://github.com/vatesfr/xen-orchestra/issues/3727) (PR [#3731](https://github.com/vatesfr/xen-orchestra/pull/3731))
### Bug fixes
- [Servers] Fix deleting server on joining a pool [#2238](https://github.com/vatesfr/xen-orchestra/issues/2238) (PR [#3728](https://github.com/vatesfr/xen-orchestra/pull/3728))
### Released packages
- xen-api v0.22.0
- xo-server-perf-alert v0.2.0
- xo-server-usage-report v0.7.1
- xo-server v5.31.0
- xo-web v5.31.0
## **5.28.2** (2018-11-16)
### Enhancements
- [VM] Ability to set nested virtualization in settings [#3619](https://github.com/vatesfr/xen-orchestra/issues/3619) (PR [#3625](https://github.com/vatesfr/xen-orchestra/pull/3625))
- [Legacy Backup] Restore and File restore functionalities moved to the Backup NG view [#3499](https://github.com/vatesfr/xen-orchestra/issues/3499) (PR [#3610](https://github.com/vatesfr/xen-orchestra/pull/3610))
- [Backup NG logs] Display warning in case of missing VMs instead of a ghosts VMs tasks (PR [#3647](https://github.com/vatesfr/xen-orchestra/pull/3647))
- [VM] On migration, automatically selects the host and SR when only one is available [#3502](https://github.com/vatesfr/xen-orchestra/issues/3502) (PR [#3654](https://github.com/vatesfr/xen-orchestra/pull/3654))
- [VM] Display VGA and video RAM for PVHVM guests [#3576](https://github.com/vatesfr/xen-orchestra/issues/3576) (PR [#3664](https://github.com/vatesfr/xen-orchestra/pull/3664))
- [Backup NG form] Display a warning to let the user know that the Delta Backup and the Continuous Replication are not supported on XenServer < 6.5 [#3540](https://github.com/vatesfr/xen-orchestra/issues/3540) (PR [#3668](https://github.com/vatesfr/xen-orchestra/pull/3668))
- [Backup NG form] Omit VMs(Simple Backup)/pools(Smart Backup/Resident on) with XenServer < 6.5 from the selection when the Delta Backup mode or the Continuous Replication mode are selected [#3540](https://github.com/vatesfr/xen-orchestra/issues/3540) (PR [#3668](https://github.com/vatesfr/xen-orchestra/pull/3668))
- [VM] Allow to switch the Virtualization mode [#2372](https://github.com/vatesfr/xen-orchestra/issues/2372) (PR [#3669](https://github.com/vatesfr/xen-orchestra/pull/3669))
### Bug fixes
- [Backup ng logs] Fix restarting VMs with concurrency issue [#3603](https://github.com/vatesfr/xen-orchestra/issues/3603) (PR [#3634](https://github.com/vatesfr/xen-orchestra/pull/3634))
- Validate modal containing a confirm text input by pressing the Enter key [#2735](https://github.com/vatesfr/xen-orchestra/issues/2735) (PR [#2890](https://github.com/vatesfr/xen-orchestra/pull/2890))
- [Patches] Bulk install correctly ignores upgrade patches on licensed hosts (PR [#3651](https://github.com/vatesfr/xen-orchestra/pull/3651))
- [Backup NG logs] Handle failed restores (PR [#3648](https://github.com/vatesfr/xen-orchestra/pull/3648))
- [Self/New VM] Incorrect limit computation [#3658](https://github.com/vatesfr/xen-orchestra/issues/3658) (PR [#3666](https://github.com/vatesfr/xen-orchestra/pull/3666))
- [Plugins] Don't expose credentials in config to users (PR [#3671](https://github.com/vatesfr/xen-orchestra/pull/3671))
- [Self/New VM] `not enough … available in the set …` error in some cases (PR [#3667](https://github.com/vatesfr/xen-orchestra/pull/3667))
- [XOSAN] Creation stuck at "Configuring VMs" [#3688](https://github.com/vatesfr/xen-orchestra/issues/3688) (PR [#3689](https://github.com/vatesfr/xen-orchestra/pull/3689))
- [Backup NG] Errors listing backups on SMB remotes with extraneous files (PR [#3685](https://github.com/vatesfr/xen-orchestra/pull/3685))
- [Remotes] Don't expose credentials to users [#3682](https://github.com/vatesfr/xen-orchestra/issues/3682) (PR [#3687](https://github.com/vatesfr/xen-orchestra/pull/3687))
- [VM] Correctly display guest metrics updates (tools, network, etc.) [#3533](https://github.com/vatesfr/xen-orchestra/issues/3533) (PR [#3694](https://github.com/vatesfr/xen-orchestra/pull/3694))
- [VM Templates] Fix deletion [#3498](https://github.com/vatesfr/xen-orchestra/issues/3498) (PR [#3695](https://github.com/vatesfr/xen-orchestra/pull/3695))
### Released packages
- xen-api v0.21.0
- xo-common v0.2.0
- xo-acl-resolver v0.4.0
- xo-server v5.30.1
- xo-web v5.30.0
## **5.28.1** (2018-11-05)
### Enhancements
### Bug fixes
- [Backup NG] Increase timeout in stale remotes detection to limit false positives (PR [#3632](https://github.com/vatesfr/xen-orchestra/pull/3632))
- Fix re-registration issue ([4e35b19ac](https://github.com/vatesfr/xen-orchestra/commit/4e35b19ac56c60f61c0e771cde70a50402797b8a))
- [Backup NG logs] Fix started jobs filter [#3636](https://github.com/vatesfr/xen-orchestra/issues/3636) (PR [#3641](https://github.com/vatesfr/xen-orchestra/pull/3641))
- [New VM] CPU and memory user inputs were ignored since previous release [#3644](https://github.com/vatesfr/xen-orchestra/issues/3644) (PR [#3646](https://github.com/vatesfr/xen-orchestra/pull/3646))
### Released packages
- @xen-orchestra/fs v0.4.1
- xo-server v5.29.4
- xo-web v5.29.3
## **5.28.0** (2018-10-31)
### Enhancements
- [Usage Report] Add IOPS read/write/total per VM [#3309](https://github.com/vatesfr/xen-orchestra/issues/3309) (PR [#3455](https://github.com/vatesfr/xen-orchestra/pull/3455))
- [Self service] Sort resource sets by name (PR [#3507](https://github.com/vatesfr/xen-orchestra/pull/3507))
- [Usage Report] Add top 3 SRs which use the most IOPS read/write/total [#3306](https://github.com/vatesfr/xen-orchestra/issues/3306) (PR [#3508](https://github.com/vatesfr/xen-orchestra/pull/3508))
- [New VM] Display a warning when the memory is below the template memory static min [#3496](https://github.com/vatesfr/xen-orchestra/issues/3496) (PR [#3513](https://github.com/vatesfr/xen-orchestra/pull/3513))
- [Backup NG form] Add link to plugins setting [#3457](https://github.com/vatesfr/xen-orchestra/issues/3457) (PR [#3514](https://github.com/vatesfr/xen-orchestra/pull/3514))
- [Backup reports] Add job and run ID [#3488](https://github.com/vatesfr/xen-orchestra/issues/3488) (PR [#3516](https://github.com/vatesfr/xen-orchestra/pull/3516))
- [Usage Report] Add top 3 VMs which use the most IOPS read/write/total [#3308](https://github.com/vatesfr/xen-orchestra/issues/3308) (PR [#3463](https://github.com/vatesfr/xen-orchestra/pull/3463))
- [Settings/logs] Homogenize action buttons in table and enable bulk deletion [#3179](https://github.com/vatesfr/xen-orchestra/issues/3179) (PR [#3528](https://github.com/vatesfr/xen-orchestra/pull/3528))
- [Settings/acls] Add bulk deletion [#3179](https://github.com/vatesfr/xen-orchestra/issues/3179) (PR [#3536](https://github.com/vatesfr/xen-orchestra/pull/3536))
- [Home] Improve search usage: raw numbers also match in names [#2906](https://github.com/vatesfr/xen-orchestra/issues/2906) (PR [#3552](https://github.com/vatesfr/xen-orchestra/pull/3552))
- [Backup NG] Timeout of a job is now in hours [#3550](https://github.com/vatesfr/xen-orchestra/issues/3550) (PR [#3553](https://github.com/vatesfr/xen-orchestra/pull/3553))
- [Backup NG] Explicit error if a VM is missing [#3434](https://github.com/vatesfr/xen-orchestra/issues/3434) (PR [#3522](https://github.com/vatesfr/xen-orchestra/pull/3522))
- [Backup NG] Show all advanced settings with non-default values in overview [#3549](https://github.com/vatesfr/xen-orchestra/issues/3549) (PR [#3554](https://github.com/vatesfr/xen-orchestra/pull/3554))
- [Backup NG] Collapse advanced settings by default [#3551](https://github.com/vatesfr/xen-orchestra/issues/3551) (PR [#3559](https://github.com/vatesfr/xen-orchestra/pull/3559))
- [Scheduling] Merge selection and interval tabs [#1902](https://github.com/vatesfr/xen-orchestra/issues/1902) (PR [#3519](https://github.com/vatesfr/xen-orchestra/pull/3519))
- [Backup NG/Restore] The backup selector now also shows the job name [#3366](https://github.com/vatesfr/xen-orchestra/issues/3366) (PR [#3564](https://github.com/vatesfr/xen-orchestra/pull/3564))
- Sort buttons by criticality in tables [#3168](https://github.com/vatesfr/xen-orchestra/issues/3168) (PR [#3545](https://github.com/vatesfr/xen-orchestra/pull/3545))
- [Usage Report] Ability to send a daily report [#3544](https://github.com/vatesfr/xen-orchestra/issues/3544) (PR [#3582](https://github.com/vatesfr/xen-orchestra/pull/3582))
- [Backup NG logs] Disable state filters with no entries [#3438](https://github.com/vatesfr/xen-orchestra/issues/3438) (PR [#3442](https://github.com/vatesfr/xen-orchestra/pull/3442))
- [ACLs] Global performance improvement on UI for non-admin users [#3578](https://github.com/vatesfr/xen-orchestra/issues/3578) (PR [#3584](https://github.com/vatesfr/xen-orchestra/pull/3584))
- [Backup NG] Improve the Schedule's view (Replace table by list) [#3491](https://github.com/vatesfr/xen-orchestra/issues/3491) (PR [#3586](https://github.com/vatesfr/xen-orchestra/pull/3586))
- ([Host/Storage], [Sr/hosts]) add bulk deletion [#3179](https://github.com/vatesfr/xen-orchestra/issues/3179) (PR [#3539](https://github.com/vatesfr/xen-orchestra/pull/3539))
- [xo-server] Use @xen-orchestra/log for basic logging [#3555](https://github.com/vatesfr/xen-orchestra/issues/3555) (PR [#3579](https://github.com/vatesfr/xen-orchestra/pull/3579))
- [Backup Report] Log error when job failed [#3458](https://github.com/vatesfr/xen-orchestra/issues/3458) (PR [#3593](https://github.com/vatesfr/xen-orchestra/pull/3593))
- [Backup NG] Display logs for backup restoration [#2511](https://github.com/vatesfr/xen-orchestra/issues/2511) (PR [#3609](https://github.com/vatesfr/xen-orchestra/pull/3609))
- [XOA] Display product version and list of all installed packages [#3560](https://github.com/vatesfr/xen-orchestra/issues/3560) (PR [#3621](https://github.com/vatesfr/xen-orchestra/pull/3621))
### Bug fixes
- [Remotes] Fix removal of broken remotes [#3327](https://github.com/vatesfr/xen-orchestra/issues/3327) (PR [#3521](https://github.com/vatesfr/xen-orchestra/pull/3521))
- [Backups] Fix stuck backups due to broken NFS remotes [#3467](https://github.com/vatesfr/xen-orchestra/issues/3467) (PR [#3534](https://github.com/vatesfr/xen-orchestra/pull/3534))
- [New VM] Fix missing cloud config when creating multiple VMs at once in some cases [#3532](https://github.com/vatesfr/xen-orchestra/issues/3532) (PR [#3535](https://github.com/vatesfr/xen-orchestra/pull/3535))
- [VM] Fix an error when an admin tried to add a disk on a Self VM whose resource set had been deleted [#2814](https://github.com/vatesfr/xen-orchestra/issues/2814) (PR [#3530](https://github.com/vatesfr/xen-orchestra/pull/3530))
- [Self/Create VM] Fix some quotas based on the template instead of the user inputs [#2683](https://github.com/vatesfr/xen-orchestra/issues/2683) (PR [#3546](https://github.com/vatesfr/xen-orchestra/pull/3546))
- [Self] Ignore DR and CR VMs when computing quotas [#3064](https://github.com/vatesfr/xen-orchestra/issues/3064) (PR [#3561](https://github.com/vatesfr/xen-orchestra/pull/3561))
- [Patches] Wrongly requiring to eject CDs from halted VMs and snapshots before installing patches (PR [#3611](https://github.com/vatesfr/xen-orchestra/pull/3611))
- [Jobs] Ensure the scheduling is not interrupted in rare cases (PR [#3617](https://github.com/vatesfr/xen-orchestra/pull/3617))
- [Home] Fix `server.getAll` error at login when user is not admin [#2335](https://github.com/vatesfr/xen-orchestra/issues/2335) (PR [#3613](https://github.com/vatesfr/xen-orchestra/pull/3613))
### Released packages
- xo-server-backup-reports v0.15.0
- xo-common v0.1.2
- @xen-orchestra/log v0.1.0
- @xen-orchestra/fs v0.4.0
- complex-matcher v0.5.0
- vhd-lib v0.4.0
- xen-api v0.20.0
- xo-server-usage-report v0.7.0
- xo-server v5.29.0
- xo-web v5.29.0
## **5.27.2** (2018-10-05)
### Enhancements
- [Host/Networks] Remove "Add network" button [#3386](https://github.com/vatesfr/xen-orchestra/issues/3386) (PR [#3478](https://github.com/vatesfr/xen-orchestra/pull/3478))
- [Host/networks] Private networks table [#3387](https://github.com/vatesfr/xen-orchestra/issues/3387) (PR [#3481](https://github.com/vatesfr/xen-orchestra/pull/3481))
- [Home/pool] Patch count pill now shows the number of unique patches in the pool [#3321](https://github.com/vatesfr/xen-orchestra/issues/3321) (PR [#3483](https://github.com/vatesfr/xen-orchestra/pull/3483))
- [Patches] Pre-install checks to avoid errors [#3252](https://github.com/vatesfr/xen-orchestra/issues/3252) (PR [#3484](https://github.com/vatesfr/xen-orchestra/pull/3484))
- [Vm/Snapshots] Allow VM operators to create snapshots and delete those they created [#3443](https://github.com/vatesfr/xen-orchestra/issues/3443) (PR [#3482](https://github.com/vatesfr/xen-orchestra/pull/3482))
- [VM/clone] Handle ACLs and Self Service [#3139](https://github.com/vatesfr/xen-orchestra/issues/3139) (PR [#3493](https://github.com/vatesfr/xen-orchestra/pull/3493))
### Bug fixes
- [Backup NG] Fix `Cannot read property 'uuid' of undefined` when a disk is removed from a VM to backup (PR [#3479](https://github.com/vatesfr/xen-orchestra/pull/3479))
- [Backup NG] Fix unexpected full after failure, interruption or basic rolling snapshot (PR [#3485](https://github.com/vatesfr/xen-orchestra/pull/3485))
- [Usage report] Display top 3 used SRs instead of top 3 biggest SRs [#3307](https://github.com/vatesfr/xen-orchestra/issues/3307) (PR [#3475](https://github.com/vatesfr/xen-orchestra/pull/3475))
### Released packages
- vhd-lib v0.3.2
- xo-vmdk-to-vhd v0.1.5
- xo-server-usage-report v0.6.0
- xo-acl-resolver v0.3.0
- xo-server v5.28.0
- xo-web v5.28.0
## **5.27.1** (2018-09-28)
### Enhancements
### Bug fixes
- [OVA Import] Allow import of files bigger than 127GB (PR [#3451](https://github.com/vatesfr/xen-orchestra/pull/3451))
- [File restore] Fix a path issue when going back to the parent folder (PR [#3446](https://github.com/vatesfr/xen-orchestra/pull/3446))
- [File restore] Fix a minor issue when showing which selected files are redundant (PR [#3447](https://github.com/vatesfr/xen-orchestra/pull/3447))
- [Memory] Fix a major leak [#2580](https://github.com/vatesfr/xen-orchestra/issues/2580) [#2820](https://github.com/vatesfr/xen-orchestra/issues/2820) (PR [#3453](https://github.com/vatesfr/xen-orchestra/pull/3453))
- [NFS Remotes] Fix `already mounted` race condition [#3380](https://github.com/vatesfr/xen-orchestra/issues/3380) (PR [#3460](https://github.com/vatesfr/xen-orchestra/pull/3460))
- Fix `Cannot read property 'type' of undefined` when deleting a VM (PR [#3465](https://github.com/vatesfr/xen-orchestra/pull/3465))
### Released packages
- @xen-orchestra/fs v0.3.1
- vhd-lib v0.3.1
- xo-vmdk-to-vhd v0.1.4
- xo-server v5.27.2
- xo-web v5.27.1
## **5.27.0** (2018-09-24)
### Enhancements
- [Remotes] Test the remote automatically on changes [#3323](https://github.com/vatesfr/xen-orchestra/issues/3323) (PR [#3397](https://github.com/vatesfr/xen-orchestra/pull/3397))
- [Remotes] Use *WORKGROUP* as default domain for new SMB remote (PR [#3398](https://github.com/vatesfr/xen-orchestra/pull/3398))
- [Backup NG form] Display a tip to encourage users to create vms on a thin-provisioned storage [#3334](https://github.com/vatesfr/xen-orchestra/issues/3334) (PR [#3402](https://github.com/vatesfr/xen-orchestra/pull/3402))
- [Backup NG form] improve schedule's form [#3138](https://github.com/vatesfr/xen-orchestra/issues/3138) (PR [#3359](https://github.com/vatesfr/xen-orchestra/pull/3359))
- [Backup NG Overview] Display transferred and merged data size for backup jobs [#3340](https://github.com/vatesfr/xen-orchestra/issues/3340) (PR [#3408](https://github.com/vatesfr/xen-orchestra/pull/3408))
- [VM] Display the PVHVM status [#3014](https://github.com/vatesfr/xen-orchestra/issues/3014) (PR [#3418](https://github.com/vatesfr/xen-orchestra/pull/3418))
- [Backup reports] Ability to test the plugin (PR [#3421](https://github.com/vatesfr/xen-orchestra/pull/3421))
- [Backup NG] Ability to restart failed VMs' backup [#3339](https://github.com/vatesfr/xen-orchestra/issues/3339) (PR [#3420](https://github.com/vatesfr/xen-orchestra/pull/3420))
- [VM] Ability to change the NIC type [#3423](https://github.com/vatesfr/xen-orchestra/issues/3423) (PR [#3440](https://github.com/vatesfr/xen-orchestra/pull/3440))
- [Backup NG Overview] Display the schedule's name [#3444](https://github.com/vatesfr/xen-orchestra/issues/3444) (PR [#3445](https://github.com/vatesfr/xen-orchestra/pull/3445))
### Bug fixes
- [Remotes] Rename connect(ed)/disconnect(ed) to enable(d)/disable(d) [#3323](https://github.com/vatesfr/xen-orchestra/issues/3323) (PR [#3396](https://github.com/vatesfr/xen-orchestra/pull/3396))
- [Remotes] Fix error appears twice on testing (PR [#3399](https://github.com/vatesfr/xen-orchestra/pull/3399))
- [Backup NG] Don't fail on VMs with empty VBDs (like CDs or floppy disks) (PR [#3410](https://github.com/vatesfr/xen-orchestra/pull/3410))
- [XOA updater] Fix issue where trial request would fail [#3407](https://github.com/vatesfr/xen-orchestra/issues/3407) (PR [#3412](https://github.com/vatesfr/xen-orchestra/pull/3412))
- [Backup NG logs] Fix log's value not being updated in the copy and report button [#3273](https://github.com/vatesfr/xen-orchestra/issues/3273) (PR [#3360](https://github.com/vatesfr/xen-orchestra/pull/3360))
- [Backup NG] Fix issue when *Delete first* was enabled for some of the remotes [#3424](https://github.com/vatesfr/xen-orchestra/issues/3424) (PR [#3427](https://github.com/vatesfr/xen-orchestra/pull/3427))
- [VM/host consoles] Work around a XenServer/XCP-ng issue which lead to some consoles not working [#3432](https://github.com/vatesfr/xen-orchestra/issues/3432) (PR [#3435](https://github.com/vatesfr/xen-orchestra/pull/3435))
- [Backup NG] Remove extraneous snapshots in case of multiple schedules [#3132](https://github.com/vatesfr/xen-orchestra/issues/3132) (PR [#3439](https://github.com/vatesfr/xen-orchestra/pull/3439))
- [Backup NG] Fix page reloaded on creating a schedule [#3461](https://github.com/vatesfr/xen-orchestra/issues/3461) (PR [#3462](https://github.com/vatesfr/xen-orchestra/pull/3462))
### Released packages
- xo-server-backup-reports v0.14.0
- @xen-orchestra/async-map v0.0.0
- @xen-orchestra/defined v0.0.0
- @xen-orchestra/emit-async v0.0.0
- @xen-orchestra/mixin v0.0.0
- xo-server v5.27.0
- xo-web v5.27.0
## **5.26.0** (2018-09-07)
### Enhancements
- [Backup (file) restore] Order backups by date in selector [#3294](https://github.com/vatesfr/xen-orchestra/issues/3294) (PR [#3374](https://github.com/vatesfr/xen-orchestra/pull/3374))
- [Self] Hide Tasks entry in menu for self users [#3311](https://github.com/vatesfr/xen-orchestra/issues/3311) (PR [#3373](https://github.com/vatesfr/xen-orchestra/pull/3373))
- [Tasks] Show previous tasks [#3266](https://github.com/vatesfr/xen-orchestra/issues/3266) (PR [#3377](https://github.com/vatesfr/xen-orchestra/pull/3377))
- [Backup NG] Add job name in names of replicated VMs (PR [#3379](https://github.com/vatesfr/xen-orchestra/pull/3379))
- [Backup NG] Restore directories [#1924](https://github.com/vatesfr/xen-orchestra/issues/1924) (PR [#3384](https://github.com/vatesfr/xen-orchestra/pull/3384))
- [VM] Start a VM on a specific host [#3191](https://github.com/vatesfr/xen-orchestra/issues/3191) (PR [#3389](https://github.com/vatesfr/xen-orchestra/pull/3389))
### Bug fixes
- [Self] Fix Self Service quotas not being correctly updated when deleting multiple VMs at a time (PR [#3368](https://github.com/vatesfr/xen-orchestra/pull/3368))
- [Backup NG] Don't fail listing backups when a remote is broken [#3365](https://github.com/vatesfr/xen-orchestra/issues/3365) (PR [#3367](https://github.com/vatesfr/xen-orchestra/pull/3367))
- [New XOSAN] Fix error sometimes occurring when selecting the pool (PR [#3370](https://github.com/vatesfr/xen-orchestra/pull/3370))
- [New VM] Selecting multiple VMs and clicking Create then Cancel used to redirect to Home [#3268](https://github.com/vatesfr/xen-orchestra/issues/3268) (PR [#3371](https://github.com/vatesfr/xen-orchestra/pull/3371))
- [Remotes] `cannot read 'properties' of undefined` error (PR [#3382](https://github.com/vatesfr/xen-orchestra/pull/3382))
- [Servers] Various issues when adding a new server [#3385](https://github.com/vatesfr/xen-orchestra/issues/3385) (PR [#3388](https://github.com/vatesfr/xen-orchestra/pull/3388))
- [Backup NG] Always delete the correct old replications [#3391](https://github.com/vatesfr/xen-orchestra/issues/3391) (PR [#3394](https://github.com/vatesfr/xen-orchestra/pull/3394))
### Released packages
- xo-server v5.26.0
- xo-web v5.26.0
## **5.25.2** (2018-08-27)
### Enhancements
### Bug fixes
- [Remotes] Fix "undefined" mount option issue [#3361](https://github.com/vatesfr/xen-orchestra/issues/3361) (PR [#3363](https://github.com/vatesfr/xen-orchestra/pull/3363))
- [Continuous Replication] Don't try to import/export VDIs on halted host [#3354](https://github.com/vatesfr/xen-orchestra/issues/3354) (PR [#3355](https://github.com/vatesfr/xen-orchestra/pull/3355))
- [Disaster Recovery] Don't try to import/export VMs on halted host (PR [#3364](https://github.com/vatesfr/xen-orchestra/pull/3364))
- [Backup NG] A successful backup job reported as Interrupted [#3018](https://github.com/vatesfr/xen-orchestra/issues/3018) (PR [#3238](https://github.com/vatesfr/xen-orchestra/pull/3238))
### Released packages
- xo-server v5.25.2
- xo-web v5.25.1
## **5.25.0** (2018-08-23)
### Enhancements
- [Tables] Filter input now always shows up even if the table is empty [#3295](https://github.com/vatesfr/xen-orchestra/issues/3295) (PR [#3296](https://github.com/vatesfr/xen-orchestra/pull/3296))
- [Tasks] The table is now still shown when there are no tasks (PR [#3305](https://github.com/vatesfr/xen-orchestra/pull/3305))
- [Host / Logs] Homogenize action buttons in table and enable bulk deletion [#3179](https://github.com/vatesfr/xen-orchestra/issues/3179) (PR [#3313](https://github.com/vatesfr/xen-orchestra/pull/3313))
- [VM/Advanced] Change "Convert" to "Convert to template" and always show the button [#3201](https://github.com/vatesfr/xen-orchestra/issues/3201) (PR [#3319](https://github.com/vatesfr/xen-orchestra/pull/3319))
- [Backup NG form] Display a tip when doing a CR on a thick-provisioned SR [#3291](https://github.com/vatesfr/xen-orchestra/issues/3291) (PR [#3333](https://github.com/vatesfr/xen-orchestra/pull/3333))
- [SR/new] Add local ext SR type [#3332](https://github.com/vatesfr/xen-orchestra/issues/3332) (PR [#3335](https://github.com/vatesfr/xen-orchestra/pull/3335))
- [Backup reports] Send report for the interrupted backup jobs on the server startup [#2998](https://github.com/vatesfr/xen-orchestra/issues/#2998) (PR [3164](https://github.com/vatesfr/xen-orchestra/pull/3164) [3154](https://github.com/vatesfr/xen-orchestra/pull/3154))
- [Backup NG form] Move VMs' selection to a dedicated card [#2711](https://github.com/vatesfr/xen-orchestra/issues/2711) (PR [#3338](https://github.com/vatesfr/xen-orchestra/pull/3338))
- [Backup NG smart mode] Exclude replicated VMs [#2338](https://github.com/vatesfr/xen-orchestra/issues/2338) (PR [#3312](https://github.com/vatesfr/xen-orchestra/pull/3312))
- [Backup NG form] Show the compression checkbox when the full mode is active [#3236](https://github.com/vatesfr/xen-orchestra/issues/3236) (PR [#3345](https://github.com/vatesfr/xen-orchestra/pull/3345))
- [New VM] Display an error when the getting of the coreOS default template fails [#3227](https://github.com/vatesfr/xen-orchestra/issues/3227) (PR [#3343](https://github.com/vatesfr/xen-orchestra/pull/3343))
- [Backup NG form] Set default retention to 1 [#3134](https://github.com/vatesfr/xen-orchestra/issues/3134) (PR [#3290](https://github.com/vatesfr/xen-orchestra/pull/3290))
- [Backup NG] New logs are searchable by job name [#3272](https://github.com/vatesfr/xen-orchestra/issues/3272) (PR [#3351](https://github.com/vatesfr/xen-orchestra/pull/3351))
- [Remotes] Add a field for NFS remotes to set mount options [#1793](https://github.com/vatesfr/xen-orchestra/issues/1793) (PR [#3353](https://github.com/vatesfr/xen-orchestra/pull/3353))
### Bug fixes
- [Backup NG form] Fix schedule's name overridden with undefined if it's not been edited [#3286](https://github.com/vatesfr/xen-orchestra/issues/3286) (PR [#3288](https://github.com/vatesfr/xen-orchestra/pull/3288))
- [Remotes] Don't change `enabled` state on errors (PR [#3318](https://github.com/vatesfr/xen-orchestra/pull/3318))
- [Remotes] Auto-reconnect on use if necessary [#2852](https://github.com/vatesfr/xen-orchestra/issues/2852) (PR [#3320](https://github.com/vatesfr/xen-orchestra/pull/3320))
- [XO items' select] Fix adding or removing a XO item from a select make the missing XO items disappear [#3322](https://github.com/vatesfr/xen-orchestra/issues/3322) (PR [#3315](https://github.com/vatesfr/xen-orchestra/pull/3315))
- [New VM / Self] Filter out SRs that are not in the template's pool [#3068](https://github.com/vatesfr/xen-orchestra/issues/3068) (PR [#3070](https://github.com/vatesfr/xen-orchestra/pull/3070))
- [New VM / Self] Fix 'unknown item' displayed in SR selector [#3267](https://github.com/vatesfr/xen-orchestra/issues/3267) (PR [#3070](https://github.com/vatesfr/xen-orchestra/pull/3070))
### Released packages
- xo-server-backup-reports v0.13.0
- @xen-orchestra/fs 0.3.0
- xo-server v5.25.0
- xo-web v5.25.0
## **5.24.0** (2018-08-09)
### Enhancements
- [Remotes] Make SMB subfolder field optional [#3249](https://github.com/vatesfr/xen-orchestra/issues/3249) (PR [#3250](https://github.com/vatesfr/xen-orchestra/pull/3250))
- [Backup NG form] Make the smart mode's toggle more visible [#2711](https://github.com/vatesfr/xen-orchestra/issues/2711) (PR [#3263](https://github.com/vatesfr/xen-orchestra/pull/3263))
- Move the copy clipboard of the VM's UUID to the header [#3221](https://github.com/vatesfr/xen-orchestra/issues/3221) (PR [#3248](https://github.com/vatesfr/xen-orchestra/pull/3248))
- [Health / Orphaned VMs] Homogenize action buttons in table and enable bulk deletion [#3179](https://github.com/vatesfr/xen-orchestra/issues/3179) (PR [#3274](https://github.com/vatesfr/xen-orchestra/pull/3274))
- [Health / Orphaned snapshot VDIs] Homogenize action buttons in table and enable bulk deletion [#3179](https://github.com/vatesfr/xen-orchestra/issues/3179) (PR [#3270](https://github.com/vatesfr/xen-orchestra/pull/3270))
- [Health / Alarms] Homogenize action buttons in table and enable bulk deletion [#3179](https://github.com/vatesfr/xen-orchestra/issues/3179) (PR [#3271](https://github.com/vatesfr/xen-orchestra/pull/3271))
- [Backup NG Overview] List the Backup NG job's modes [#3169](https://github.com/vatesfr/xen-orchestra/issues/3169) (PR [#3277](https://github.com/vatesfr/xen-orchestra/pull/3277))
- [Backup NG form] Move "Use compression" checkbox in the advanced settings [#2711](https://github.com/vatesfr/xen-orchestra/issues/2711) (PR [#3281](https://github.com/vatesfr/xen-orchestra/pull/3281))
- [Backup NG form] Ability to remove previous backups first before backup the VMs [#3212](https://github.com/vatesfr/xen-orchestra/issues/3212) (PR [#3260](https://github.com/vatesfr/xen-orchestra/pull/3260))
- [Patching] Check date consistency before patching to avoid error on install [#3056](https://github.com/vatesfr/xen-orchestra/issues/3056)
### Bug fixes
- [Pools] Filter GPU groups by pool [#3176](https://github.com/vatesfr/xen-orchestra/issues/3176) (PR [#3253](https://github.com/vatesfr/xen-orchestra/pull/3253))
- [Backup NG] Fix delta backups with SMB remotes [#3224](https://github.com/vatesfr/xen-orchestra/issues/3224) (PR [#3278](https://github.com/vatesfr/xen-orchestra/pull/3278))
- Fix VM restoration getting stuck on local SRs [#3245](https://github.com/vatesfr/xen-orchestra/issues/3245) (PR [#3243](https://github.com/vatesfr/xen-orchestra/pull/3243))
### Released packages
- xen-api v0.17.0
- @xen-orchestra/fs 0.2.1
- xo-server v5.24.0
- xo-web v5.24.0
## **5.23.0** (2018-07-26)
### Enhancements
- Export VDI content [#2432](https://github.com/vatesfr/xen-orchestra/issues/2432) (PR [#3194](https://github.com/vatesfr/xen-orchestra/pull/3194))
- Search syntax support wildcard (`*`) and regular expressions [#3190](https://github.com/vatesfr/xen-orchestra/issues/3190) (PRs [#3198](https://github.com/vatesfr/xen-orchestra/pull/3198) & [#3199](https://github.com/vatesfr/xen-orchestra/pull/3199))
- Import VDI content [#2432](https://github.com/vatesfr/xen-orchestra/issues/2432) (PR [#3216](https://github.com/vatesfr/xen-orchestra/pull/3216))
- [Backup NG form] Ability to edit a schedule's name [#2711](https://github.com/vatesfr/xen-orchestra/issues/2711) [#3071](https://github.com/vatesfr/xen-orchestra/issues/3071) (PR [#3143](https://github.com/vatesfr/xen-orchestra/pull/3143))
- [Remotes] Ability to change the type of a remote [#2423](https://github.com/vatesfr/xen-orchestra/issues/2423) (PR [#3207](https://github.com/vatesfr/xen-orchestra/pull/3207))
- [Backup NG new] Ability to set a job's timeout [#2978](https://github.com/vatesfr/xen-orchestra/issues/2978) (PR [#3222](https://github.com/vatesfr/xen-orchestra/pull/3222))
- [Remotes] Ability to edit/delete a remote with an invalid URL [#3182](https://github.com/vatesfr/xen-orchestra/issues/3182) (PR [#3226](https://github.com/vatesfr/xen-orchestra/pull/3226))
- [Backup NG logs] Prevent user from deleting logs to help resolving issues [#3153](https://github.com/vatesfr/xen-orchestra/issues/3153) (PR [#3235](https://github.com/vatesfr/xen-orchestra/pull/3235))
### Bug fixes
- [Backup Reports] Report not sent if reportWhen failure and at least a VM is successfull [#3181](https://github.com/vatesfr/xen-orchestra/issues/3181) (PR [#3185](https://github.com/vatesfr/xen-orchestra/pull/3185))
- [Backup NG] Correctly migrate report setting from legacy jobs [#3180](https://github.com/vatesfr/xen-orchestra/issues/3180) (PR [#3206](https://github.com/vatesfr/xen-orchestra/pull/3206))
- [Backup NG] remove incomplete XVA files [#3159](https://github.com/vatesfr/xen-orchestra/issues/3159) (PR [#3215](https://github.com/vatesfr/xen-orchestra/pull/3215))
- [Backup NG form] Ability to edit a schedule's state [#3223](https://github.com/vatesfr/xen-orchestra/issues/3223) (PR [#3228](https://github.com/vatesfr/xen-orchestra/pull/3228))
### Released packages
- xo-remote-parser v0.5.0
- complex-matcher v0.4.0
- xo-server-backup-reports v0.12.3
- xo-server v5.23.0
- xo-web v5.23.0
## **5.22.1** (2018-07-13)
### Bug fixes
- [Remote select] Gracefully ignore remotes with invalid URL (PR [#3178](https://github.com/vatesfr/xen-orchestra/pull/3178))
### Released packages
- xo-web v5.22.1
## **5.22.0** (2018-07-12)
### Enhancements
- [Backup NG form] Add a link to the remotes' settings [#2711](https://github.com/vatesfr/xen-orchestra/issues/2711) [#3106](https://github.com/vatesfr/xen-orchestra/issues/3106) [#2299](https://github.com/vatesfr/xen-orchestra/issues/2299) (PR [#3128](https://github.com/vatesfr/xen-orchestra/pull/3128))
- [Backup NG logs] Make copy to clipboard and report buttons always available [#3130](https://github.com/vatesfr/xen-orchestra/issues/3130) (PR [#3133](https://github.com/vatesfr/xen-orchestra/pull/3133))
- Warning message when creating a local remote [#3105](https://github.com/vatesfr/xen-orchestra/issues/3105) (PR [3142](https://github.com/vatesfr/xen-orchestra/pull/3142))
- [Remotes] Allow optional port for NFS remote [2299](https://github.com/vatesfr/xen-orchestra/issues/2299) (PR [#3131](https://github.com/vatesfr/xen-orchestra/pull/3131))
- [Backup NG form] Add offline snapshot info (PR [#3144](https://github.com/vatesfr/xen-orchestra/pull/3144))
- [Backup NG overview] Display concurrency and offline snapshot value [3087](https://github.com/vatesfr/xen-orchestra/issues/3087) (PR [3145](https://github.com/vatesfr/xen-orchestra/pull/3145))
- [VM revert] notify the result of reverting a VM [3095](https://github.com/vatesfr/xen-orchestra/issues/3095) (PR [3150](https://github.com/vatesfr/xen-orchestra/pull/3150))
- [Backup NG logs] Link XO items in the details modal [#2711](https://github.com/vatesfr/xen-orchestra/issues/2711) (PR [#3171](https://github.com/vatesfr/xen-orchestra/pull/3171))
- [VM/Snapshots] Add fast clone option when creating a VM [#3120](https://github.com/vatesfr/xen-orchestra/issues/3120) (PR [#3136](https://github.com/vatesfr/xen-orchestra/pull/3136))
- Add the Turkish translation (PR [#3174](https://github.com/vatesfr/xen-orchestra/pull/3174) [#2870](https://github.com/vatesfr/xen-orchestra/pull/2870) [#2871](https://github.com/vatesfr/xen-orchestra/pull/2871))
### Bug fixes
- Delete schedules with their job [#3108](https://github.com/vatesfr/xen-orchestra/issues/3108) (PR [3124](https://github.com/vatesfr/xen-orchestra/pull/3124))
- Remote creation: correctly reset form [#3140](https://github.com/vatesfr/xen-orchestra/issues/3140) (PR [3141](https://github.com/vatesfr/xen-orchestra/pull/3141))
- Make cloud config templates available for all users [3147](https://github.com/vatesfr/xen-orchestra/issues/3147) (PR [3148](https://github.com/vatesfr/xen-orchestra/pull/3148))
- [New VM] Only create the cloud config drive when its option is enabled [3161](https://github.com/vatesfr/xen-orchestra/issues/3161) (PR [3162](https://github.com/vatesfr/xen-orchestra/pull/3162))
- Fix error when installing patches from the host or without a default SR (PR [3166](https://github.com/vatesfr/xen-orchestra/pull/3166))
- [Backup NG] Fix SMB *Not implemented* issue [#3149](](https://github.com/vatesfr/xen-orchestra/issues/3149) (PR [3175](https://github.com/vatesfr/xen-orchestra/pull/3175))
### Released packages
- xo-remote-parser 0.4.0
- @xen-orchestra/fs 0.2.0
- vhd-lib 0.3.0
- vhd-cli 0.1.0
- xo-server v5.22.0
- xo-web v5.22.0
## **5.21.0** (2018-06-28)
### Enhancements
@@ -11,14 +554,29 @@
- [Backup NG form] Improve feedback [#2711](https://github.com/vatesfr/xen-orchestra/issues/2711)
- [Backup NG] Different retentions for backup and replication [#2895](https://github.com/vatesfr/xen-orchestra/issues/2895)
- Possibility to use a fast clone when creating a VM from a snapshot [#2937](https://github.com/vatesfr/xen-orchestra/issues/2937)
- Ability to customize cloud config templates [#2984](https://github.com/vatesfr/xen-orchestra/issues/2984)
- Add Backup deprecation message and link to Backup NG migration blog post [#3089](https://github.com/vatesfr/xen-orchestra/issues/3089)
- [Backup NG] Ability to cancel a running backup job [#3047](https://github.com/vatesfr/xen-orchestra/issues/3047)
- [Backup NG form] Ability to enable/disable a schedule [#3062](https://github.com/vatesfr/xen-orchestra/issues/3062)
- New backup/health view with non-existent backup snapshots table [#3090](https://github.com/vatesfr/xen-orchestra/issues/3090)
- Disable cancel/destroy tasks when not allowed [#3076](https://github.com/vatesfr/xen-orchestra/issues/3076)
- Default remote type is NFS [#3103](https://github.com/vatesfr/xen-orchestra/issues/3103) (PR [#3114](https://github.com/vatesfr/xen-orchestra/pull/3114))
- Add legacy backups snapshots to backup/health [#3082](https://github.com/vatesfr/xen-orchestra/issues/3082) (PR [#3111](https://github.com/vatesfr/xen-orchestra/pull/3111))
- [Backup NG logs] Add the job's name to the modal's title [#2711](https://github.com/vatesfr/xen-orchestra/issues/2711) (PR [#3115](https://github.com/vatesfr/xen-orchestra/pull/3115))
- Adding a XCP-ng host to a XS pool now fails fast [#3061](https://github.com/vatesfr/xen-orchestra/issues/3061) (PR [#3118](https://github.com/vatesfr/xen-orchestra/pull/3118))
- [Backup NG logs] Ability to report a failed job and copy its log to the clipboard [#3100](https://github.com/vatesfr/xen-orchestra/issues/3100) (PR [#3110](https://github.com/vatesfr/xen-orchestra/pull/3110))
### Bugs
### Bug fixes
- update the xentools search item to return the version number of installed xentools [#3015](https://github.com/vatesfr/xen-orchestra/issues/3015)
- Fix Nagios backup reports [#2991](https://github.com/vatesfr/xen-orchestra/issues/2991)
- Fix the retry of a single failed/interrupted VM backup [#2912](https://github.com/vatesfr/xen-orchestra/issues/2912#issuecomment-395480321)
- New VM with Self: filter out networks that are not in the template's pool [#3011](https://github.com/vatesfr/xen-orchestra/issues/3011)
- [Backup NG] Auto-detect when a full export is necessary.
- Fix Load Balancer [#3075](https://github.com/vatesfr/xen-orchestra/issues/3075#event-1685469551) [#3026](https://github.com/vatesfr/xen-orchestra/issues/3026)
- [SR stats] Don't scale XAPI iowait values [#2969](https://github.com/vatesfr/xen-orchestra/issues/2969)
- [Backup NG] Don't list unusable SRs for CR/DR [#3050](https://github.com/vatesfr/xen-orchestra/issues/3050)
- Fix creating VM from snapshot (PR [3117](https://github.com/vatesfr/xen-orchestra/pull/3117))
## **5.20.0** (2018-05-31)

10
CHANGELOG.unreleased.md Normal file
View File

@@ -0,0 +1,10 @@
> This file contains all changes that have not been released yet.
### Enhancements
### Bug fixes
### Released packages
- xo-server v5.37.0
- xo-web v5.37.0

View File

@@ -4,16 +4,15 @@
- [ ] PR reference the relevant issue (e.g. `Fixes #007`)
- [ ] if UI changes, a screenshot has been added to the PR
- [ ] CHANGELOG updated
- [ ] `CHANGELOG.unreleased.md`:
- enhancement/bug fix entry added
- list of packages to release updated (`${name} v${new version}`)
- [ ] documentation updated
- [ ] **I have tested added/updated features** (and impacted code)
### Process
1. create a PR as soon as possible
1. mark it as `WiP:` (Work in Progress) if not ready to be merged
1. when you want a review, add a reviewer
1. if necessary, update your PR, and readd a reviewer
### List of packages to release
> No need to mention xo-server and xo-web.
1. if necessary, update your PR, and re- add a reviewer

9
book.json Normal file
View File

@@ -0,0 +1,9 @@
{
"gitbook": ">=3.0.0",
"root": "./docs",
"plugins": [
"anchors",
"-edit-link"
],
"pluginsConfig": {}
}

31
docs/README.md Normal file
View File

@@ -0,0 +1,31 @@
# Xen Orchestra
## Introduction
Welcome to the official Xen Orchestra (XO) documentation.
XO is a web interface to visualize and administer your XenServer (or XAPI enabled) hosts. **No agent** is required for it to work.
It aims to be easy to use on any device supporting modern web technologies (HTML 5, CSS 3, JavaScript), such as your desktop computer or your smartphone.
![](https://pbs.twimg.com/profile_images/601775622675898368/xWbbafyO_400x400.png)
## XOA quick deploy
SSH to your XenServer, and execute the following:
```
bash -c "$(curl -s http://xoa.io/deploy)"
```
### XOA credentials
* Web UI: `admin@admin.net` / `admin`
* Console/SSH: `xoa` / `xoa` (first login)
## Must read
* [XOA installation](xoa.md)
* [Main features](features.md)
* [Pro Support](support.md)

79
docs/SUMMARY.md Normal file
View File

@@ -0,0 +1,79 @@
# Summary
* [Introduction](README.md)
* [Architecture](architecture.md)
* [xo-server](xo-server.md)
* [xo-web](xo-web.md)
* [xo-cli](xo-cli.md)
* [others](others.md)
* [Installation](installation.md)
* [XOA](xoa.md)
* [Updater](updater.md)
* [Trial activation](trial_activation.md)
* [Plugins](plugins.md)
* [Logs](logs.md)
* [Compatibility](supported-version.md)
* [Troubleshooting](troubleshooting.md)
* [From the sources](from_the_sources.md)
* [Configuration](configuration.md)
* [Features](features.md)
* [Administration](administration.md)
* [Home view](user_interface.md)
* [Search and filters](search.md)
* [VM management](vm_management.md)
* [VM creation](vm_creation.md)
* [VM import and export](vm_import_export.md)
* [XenServer Patching](patching.md)
* [Docker support](docker_support.md)
* [Backup and DR](backups.md)
* [Full backups](full_backups.md)
* [Rolling snapshots](rolling_snapshots.md)
* [Continuous Delta backups](delta_backups.md)
* [Continuous Replication](continuous_replication.md)
* [Disaster recovery](disaster_recovery.md)
* [Smart Backup](smart_backup.md)
* [File level Restore](file_level_restore.md)
* [Metadata Backup](metadata_backup.md)
* [Backup Concurrency](concurrency.md)
* [Configure backup reports](backup_reports.md)
* [Backup troubleshooting](backup_troubleshooting.md)
* [User authentication](authentication.md)
* [Built-in](built-in.md)
* [LDAP](ldap.md)
* [SAML](saml.md)
* [GitHub](github.md)
* [Google](google.md)
* [Resources delegation](resources_delegation.md)
* [ACLs](acls.md)
* [CloudInit](cloudinit.md)
* [Self Service](self_service.md)
* [Visualizations](visualizations.md)
* [Health](health.md)
* [Job manager](scheduler.md)
* [Alerts](alerts.md)
* [Load balancing](load_balancing.md)
* [Emergency Shutdown](emergency_shutdown.md)
* [Auto scalability](auto_scalability.md)
* [Forecaster](forecaster.md)
* [Recipes](recipes.md)
* [Reverse proxy](reverse_proxy.md)
* [How to contribute?](contributing.md)
* [Support](support.md)
* [Roadmap](roadmap.md)
* [Purchase](purchase.md)
* [Direct purchase](directpurchase.md)
* [Through purchase department](through_purchase_department.md)
* [Reseller](reseller.md)
* [Editions](editions.md)
* [Trial](trial.md)
* [Invoices](invoices.md)
* [Upgrade](upgrade.md)
* [XOSAN](xosan.md)
* [Requirements](xosan_requirements.md)
* [Types](xosan_types.md)
* [Replicated](xosan_replicated.md)
* [Disperse](xosan_disperse.md)
* [Creation](xosan_create.md)
* [Trial](xosan_trial.md)
* [General Troubleshooting](general-troubleshooting.md)
* [Glossary](glossary.md)

72
docs/acls.md Normal file
View File

@@ -0,0 +1,72 @@
# ACLs
> ACLs are permissions that apply to pre-existing objects. Only a super admin (XO administrator) can create objects.
ACLs are the permissions for your users or groups. The ACLs view can be accessed in the "Settings" panel.
1. Select the user or group you want to apply permissions on
2. Select the object on which the permission will apply
3. Choose the role for this ACL
4. Click on "Create"
![](./assets/createacl.png)
> Pro tip: you can click to add multiple objects at the same time!
Your ACL is now available in the right list:
![](./assets/acllist.png)
You can edit/remove existing ACLs here.
## Roles
There are 3 different roles for your users:
* Admin
* Operator
* Viewer
### Admin
An object admin can do everything on it, even destroy it. E.g with its admin VM:
* remove it
* migrate it (to a host with admin permission on it)
* modify the VM resources, name and description
* clone it
* copy it
* convert it into a template
* snapshot it (even revert from a snapshot)
* export it
* attach/add visible disks
* same for network cards
### Operator
An operator can make everyday operations on assigned objects. E.g on a VM:
* eject a CD
* insert a CD (if he can view the ISO storage repository)
* start, restart, shutdown, suspend/resume it
All other operations are forbidden.
### Viewer
A viewer can only see the VM state and its metrics. That's all!
## Inheritance
Objects have a hierarchy: a Pool contains all its hosts, containing itself all its VMs.
If you give a *view* permission to a user (or a group) on a pool, he will automatically see all the objects inside this pool (SRs, hosts, VMs).
## Examples
### Allow a user to install an OS
If the OS install needs an ISO, you need to give this user 2 permissions:
* *Operate* on the VM (e.g to start it)
* *View* on the ISO Storage containing the needed ISO.

12
docs/administration.md Normal file
View File

@@ -0,0 +1,12 @@
# Administration
This section contains everyday XenServer administration tasks.
* [Home view](user_interface.md)
* [Search and filters](search.md)
* [VM management](vm_management.md)
* [VM creation](vm_creation.md)
* [VM import and export](vm_import_export.md)
* [XenServer Patching](patching.md)
![](./assets/xo5homevms.png)

35
docs/alerts.md Normal file
View File

@@ -0,0 +1,35 @@
# Alerts
Alerts are a way to warn the administrator about various events. The first kind of alerts will be emails and also in a dedicated area of `xo-web` to display them.
## Performances alerts
The administrator will configure alerts based on performance thresholds.
The configurable metrics are:
* CPU usage (VM, host)
* RAM usage (VM, host)
* network bandwidth (VM, host)
* load average (host)
* disk IO (VM)
* total IO (SR, only for XenServer Dundee and higher)
If any configured values exceed the threshold during a selected period of time, an alert will be sent.
Those alerts will be also stored and accessible in the web interface, and also later for the load balancing feature (helping it to solve those performance problems).
## Updates alerts
When your XOA detects new packages, you'll be notified by email.
## Backup alerts
Same story for backups: if a backup fails, you'll receive an email.
You can choose to be notified only if it fails or even after each backup job.
Current supported alerts system:
* Email
* XMPP

28
docs/architecture.md Normal file
View File

@@ -0,0 +1,28 @@
# Architecture
Xen Orchestra (XO) is software built with a server and clients, such as the web client `xo-web`, but also a CLI capable client, called `xo-cli`.
> XO is totally agent-less: you don't have to install any program on your hosts to get it working!
## XOA
*Xen Orchestra Virtual Appliance* (XOA) is a virtual machine with Xen Orchestra already installed, thus working out-of-the-box.
This is the easiest way to try Xen Orchestra quickly.
Your XOA is connected to all your hosts, or the pool master only if you are using Pools in XenServer:
![](./assets/partner2.jpg)
## Xen Orchestra (XO)
![](./assets/xo-arch.jpg)
Xen Orchestra itself is built as a modular solution. Each part has its role:
- The core is "[xo-server](https://github.com/vatesfr/xen-orchestra/tree/master/packages/xo-server/)" - a daemon dealing directly with XenServer or XAPI capable hosts. This is where users are stored, and it's the center point for talking to your whole Xen infrastructure.
- The web interface is "[xo-web](https://github.com/vatesfr/xen-orchestra/tree/master/packages/xo-web)" - it runs directly from your browser. The connection with ```xo-server``` is done via *WebSockets*.
- "[xo-cli](https://github.com/vatesfr/xen-orchestra/tree/master/packages/xo-cli)" is a module allowing you to send commands directly from the command line.
We have other modules as well (like the LDAP plugin for example). It allows us to use this modular architecture to add further parts as we need them. It's completely flexible, allowing us to adapt Xen Orchestra to every existing workflow.

BIN
docs/assets/DocImg1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
docs/assets/DocImg2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
docs/assets/DocImg3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

BIN
docs/assets/DocImg4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
docs/assets/DocImg5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
docs/assets/DocImg6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

BIN
docs/assets/DocImg7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

BIN
docs/assets/DocImg8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
docs/assets/DocImg9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
docs/assets/acllist.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
docs/assets/cover.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
docs/assets/cpu_weight.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

BIN
docs/assets/createacl.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Some files were not shown because too many files have changed in this diff Show More