Compare commits
1527 Commits
xo-web-v5.
...
cr-seed-cl
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e7b01fc72f | ||
|
|
68cd215383 | ||
|
|
45b19ac5f2 | ||
|
|
d8bd30e355 | ||
|
|
4fec816274 | ||
|
|
1211447e81 | ||
|
|
ed78f4c5ee | ||
|
|
4a2e9d4c88 | ||
|
|
1807917204 | ||
|
|
b3004a38aa | ||
|
|
0ad6c073ee | ||
|
|
0abaadb391 | ||
|
|
b43cf27479 | ||
|
|
bcab6bb584 | ||
|
|
8213601df6 | ||
|
|
e7ad577661 | ||
|
|
070213dd7f | ||
|
|
395cbb33ef | ||
|
|
a429a7aa35 | ||
|
|
b70e09937b | ||
|
|
109ff4a4da | ||
|
|
0e185ab92a | ||
|
|
aefb76a4f6 | ||
|
|
fe653dc7dd | ||
|
|
8b5c0e706c | ||
|
|
d25584edf9 | ||
|
|
496ca2c716 | ||
|
|
4a09074a40 | ||
|
|
385fd80bb9 | ||
|
|
b6818abd0d | ||
|
|
45b5d10f1b | ||
|
|
7866a265fe | ||
|
|
774c0d09b1 | ||
|
|
df0029db3b | ||
|
|
c1a5364448 | ||
|
|
557ba1a4bc | ||
|
|
bf932aada1 | ||
|
|
2304deab3f | ||
|
|
ea9c0cfb10 | ||
|
|
2fd5a6501b | ||
|
|
0ca5a32142 | ||
|
|
f55f812d30 | ||
|
|
98bbd53c28 | ||
|
|
1f0bfe2518 | ||
|
|
c5eae6e498 | ||
|
|
bfcdd29f10 | ||
|
|
8db0b59fe1 | ||
|
|
6bc4c03b4c | ||
|
|
4d63f93390 | ||
|
|
9722f2a5bd | ||
|
|
ee9c6817d6 | ||
|
|
58564306ca | ||
|
|
17c6f1762d | ||
|
|
17f13307bb | ||
|
|
a43c141ddd | ||
|
|
1e6da359cc | ||
|
|
626a9a777f | ||
|
|
2768ad9e3b | ||
|
|
3eec8f1a55 | ||
|
|
6148daa8b8 | ||
|
|
338de7985f | ||
|
|
df99528445 | ||
|
|
890901366d | ||
|
|
13271aa196 | ||
|
|
71aea20c7d | ||
|
|
b09da76b04 | ||
|
|
ce35bbaeb4 | ||
|
|
0034f0a1d3 | ||
|
|
e3391fa81f | ||
|
|
bacdc63c70 | ||
|
|
b0285799c6 | ||
|
|
f8b34c5d64 | ||
|
|
40f4a66bda | ||
|
|
6125dae158 | ||
|
|
dfe4a934e9 | ||
|
|
ecc33f46ab | ||
|
|
00d1985cf9 | ||
|
|
138aed8ae1 | ||
|
|
def9f947b7 | ||
|
|
20dc4af4a4 | ||
|
|
4d2909567c | ||
|
|
92a93e4393 | ||
|
|
389967d40c | ||
|
|
d66e8f29b7 | ||
|
|
3e9425bf79 | ||
|
|
41506e785e | ||
|
|
32d7ccfea5 | ||
|
|
8a9f952ada | ||
|
|
d15efae43f | ||
|
|
627c06f4a8 | ||
|
|
3e6201e93a | ||
|
|
b941a649b5 | ||
|
|
7b2b9ca618 | ||
|
|
404cf2b7e6 | ||
|
|
42698293de | ||
|
|
563969f2e9 | ||
|
|
887e21daa5 | ||
|
|
b75a2a8dca | ||
|
|
31f32ba23c | ||
|
|
936a4068d5 | ||
|
|
266f287774 | ||
|
|
5808485812 | ||
|
|
b6dd83e32b | ||
|
|
2236bd71c4 | ||
|
|
ec869ffdd3 | ||
|
|
1aa4966a92 | ||
|
|
235da199f9 | ||
|
|
4cad820271 | ||
|
|
4a0b29e1f2 | ||
|
|
1db9ca9e31 | ||
|
|
942ddfa742 | ||
|
|
355cddc044 | ||
|
|
c23cccf2ce | ||
|
|
1407fb7bab | ||
|
|
4ba542b70f | ||
|
|
76f75401ee | ||
|
|
011cc7ad65 | ||
|
|
b966e6097f | ||
|
|
809e1a35cd | ||
|
|
8e7e1fccbe | ||
|
|
e86b30f205 | ||
|
|
7dc0c4cf15 | ||
|
|
561a9f140d | ||
|
|
ba56114e9f | ||
|
|
11bd75d2fe | ||
|
|
ececbaf201 | ||
|
|
1985134d94 | ||
|
|
2cc59078b1 | ||
|
|
3d4d7db5da | ||
|
|
dc40ceaafe | ||
|
|
0110e223ee | ||
|
|
e7467dca8a | ||
|
|
4a1e87b534 | ||
|
|
5a32f904bc | ||
|
|
14d023a9f5 | ||
|
|
2e5e81e93e | ||
|
|
c9cc106be6 | ||
|
|
29fc17f260 | ||
|
|
c7d16fd345 | ||
|
|
ffe29b8957 | ||
|
|
be1bd9254d | ||
|
|
6156649faa | ||
|
|
2edddaa835 | ||
|
|
d00fff3d4c | ||
|
|
c0b84ae848 | ||
|
|
f68d1539aa | ||
|
|
455e48596c | ||
|
|
ba6b968256 | ||
|
|
8fbf2786fd | ||
|
|
06d38808be | ||
|
|
49565a672b | ||
|
|
2d980f3d50 | ||
|
|
e29ba3e0cf | ||
|
|
dff342d2bd | ||
|
|
d38ad3a17f | ||
|
|
ce21da4146 | ||
|
|
09a381806b | ||
|
|
0ca7b8539f | ||
|
|
cc90d41be4 | ||
|
|
a7dd83772e | ||
|
|
eea52b5166 | ||
|
|
4c20e89a8b | ||
|
|
0d88a9f8f4 | ||
|
|
7ad4fc0e6c | ||
|
|
c7c205d52f | ||
|
|
cdc43a6cde | ||
|
|
a58a9a9e6a | ||
|
|
9d2f15cf33 | ||
|
|
2d596af9a5 | ||
|
|
f70a25e82f | ||
|
|
33859303bd | ||
|
|
1ed0c01add | ||
|
|
dfcd41992a | ||
|
|
26cb388c64 | ||
|
|
b2be6e5d5b | ||
|
|
2fec62968e | ||
|
|
b15a6963e4 | ||
|
|
f7b4f78c8d | ||
|
|
9bebfe71ac | ||
|
|
a7b3e8e59c | ||
|
|
b9f3313903 | ||
|
|
9c4bd0d0dd | ||
|
|
ac2e490569 | ||
|
|
114cf7ac7d | ||
|
|
255e0c61d5 | ||
|
|
288868fe91 | ||
|
|
aba7b730f5 | ||
|
|
b95fc86667 | ||
|
|
0ed1df3af6 | ||
|
|
eff38b9aee | ||
|
|
53477be12d | ||
|
|
d99555a4a8 | ||
|
|
f00be23e02 | ||
|
|
ee6025f3ad | ||
|
|
990c0e570d | ||
|
|
b07b4e3744 | ||
|
|
6d25e11f72 | ||
|
|
16c250e122 | ||
|
|
e6a10e1ac2 | ||
|
|
829beb84e2 | ||
|
|
c3066921ab | ||
|
|
ca424f166b | ||
|
|
4192abf3c2 | ||
|
|
d51527b2d8 | ||
|
|
a1c829e393 | ||
|
|
7dfb1635c2 | ||
|
|
e58d56a656 | ||
|
|
93037ee44f | ||
|
|
ecd8265098 | ||
|
|
4c73cfa423 | ||
|
|
19b3c207c7 | ||
|
|
58d4408909 | ||
|
|
4925e678ed | ||
|
|
7d14705dcf | ||
|
|
5d0040acd1 | ||
|
|
8aa6c6551b | ||
|
|
c9f08a2f8f | ||
|
|
70b17a6fa9 | ||
|
|
c1a118f2a1 | ||
|
|
fa3eb1cdf5 | ||
|
|
16a6902bd2 | ||
|
|
296e30a40f | ||
|
|
03f6e33fd2 | ||
|
|
dde4410a1b | ||
|
|
191af334e7 | ||
|
|
69d5abc840 | ||
|
|
0e4b0ce768 | ||
|
|
d065887ffd | ||
|
|
de33f33c0f | ||
|
|
aa45032364 | ||
|
|
4f6c515cef | ||
|
|
3ed081f04c | ||
|
|
3370014ddf | ||
|
|
3241c426a2 | ||
|
|
961babe6a3 | ||
|
|
b654cba4b4 | ||
|
|
4bf4de1979 | ||
|
|
c2c62b20f0 | ||
|
|
f6e48adc28 | ||
|
|
80c1c81514 | ||
|
|
16f8029e69 | ||
|
|
072dea71f0 | ||
|
|
ff1892057d | ||
|
|
cdc2ac2d9b | ||
|
|
de76387c8f | ||
|
|
939b416d2e | ||
|
|
f1b1c4ae13 | ||
|
|
d38a4ccf08 | ||
|
|
fb1bf6a1e7 | ||
|
|
46100729b0 | ||
|
|
4916643fdc | ||
|
|
124d743052 | ||
|
|
dfdc2a62ab | ||
|
|
76f3bc0758 | ||
|
|
e16971c31a | ||
|
|
c4b9e36346 | ||
|
|
c95fe164cf | ||
|
|
f1964f3380 | ||
|
|
84701cb7e2 | ||
|
|
f8a2f2d3cd | ||
|
|
4b092a5a7f | ||
|
|
33e8cb81bb | ||
|
|
e2b29be6a8 | ||
|
|
6f9dad8999 | ||
|
|
089cffcca1 | ||
|
|
88df5a8337 | ||
|
|
794c1cf89b | ||
|
|
9a5eea6e78 | ||
|
|
40568cd61f | ||
|
|
358e1441cc | ||
|
|
be930e127e | ||
|
|
3656e83df5 | ||
|
|
abbb0450f8 | ||
|
|
8e4beeb00f | ||
|
|
05d10ef985 | ||
|
|
989d27154d | ||
|
|
ec9957bd86 | ||
|
|
dc8a7c46e0 | ||
|
|
9ee2d8e0c2 | ||
|
|
6c62d6840a | ||
|
|
2a2135ac71 | ||
|
|
efaad2efb2 | ||
|
|
3b244c24d7 | ||
|
|
915052d5f6 | ||
|
|
05c6c7830d | ||
|
|
0217c51559 | ||
|
|
0c514198bb | ||
|
|
0e68834b4c | ||
|
|
ee99ef6264 | ||
|
|
bebb9bf0df | ||
|
|
4830ac9623 | ||
|
|
58b1d0fba8 | ||
|
|
cc4e69e631 | ||
|
|
e14fda6e8a | ||
|
|
ec48b77af3 | ||
|
|
c7d6a19864 | ||
|
|
7d714c8ce4 | ||
|
|
f70989c3a2 | ||
|
|
70490988b0 | ||
|
|
d0795fdded | ||
|
|
1c736e9910 | ||
|
|
62979d5c22 | ||
|
|
ec8a4da73c | ||
|
|
dea1bfee01 | ||
|
|
c18b82504a | ||
|
|
ed5460273f | ||
|
|
b91f8b21b9 | ||
|
|
5cea18e577 | ||
|
|
148eaa6a72 | ||
|
|
80794211af | ||
|
|
75dcbae417 | ||
|
|
b19682b3c5 | ||
|
|
dd3b97cae2 | ||
|
|
79891235f3 | ||
|
|
1e2f72ab6b | ||
|
|
66d02e3808 | ||
|
|
275e1f8f4c | ||
|
|
84dbbb0fbb | ||
|
|
a36ef5209c | ||
|
|
3497889302 | ||
|
|
0a2f6b4ce7 | ||
|
|
f8be44d746 | ||
|
|
379253c5ae | ||
|
|
aed1ba474c | ||
|
|
bc72e67442 | ||
|
|
26c965faa9 | ||
|
|
b3a3965ed2 | ||
|
|
d7fa68248c | ||
|
|
7f88b46f4c | ||
|
|
dd60d82d3d | ||
|
|
4eeb995340 | ||
|
|
1d29348e30 | ||
|
|
a24db3f896 | ||
|
|
cffac27d0a | ||
|
|
b207cbdd77 | ||
|
|
10baecefb9 | ||
|
|
42620323a9 | ||
|
|
4d91006994 | ||
|
|
a81f0b9a93 | ||
|
|
2cee413ae1 | ||
|
|
53099eacc8 | ||
|
|
b628c5c07e | ||
|
|
12889b6a09 | ||
|
|
0c23ca5b66 | ||
|
|
d732ee3ade | ||
|
|
65cb0bc4cf | ||
|
|
1ba68a94e3 | ||
|
|
084430451a | ||
|
|
458a4d4efe | ||
|
|
92a67bf5fb | ||
|
|
b20a46da76 | ||
|
|
62eeab2a74 | ||
|
|
790b43910d | ||
|
|
ba65461c4d | ||
|
|
5bd468791f | ||
|
|
37f71bb36c | ||
|
|
2ed4b7ad3f | ||
|
|
7eb970f22a | ||
|
|
13db4a8411 | ||
|
|
49a7a89bbf | ||
|
|
0af8a60c1c | ||
|
|
e1650b376c | ||
|
|
873b40cc70 | ||
|
|
d45265b180 | ||
|
|
ff50b2848e | ||
|
|
d67fae22ab | ||
|
|
d809002558 | ||
|
|
5c30559d15 | ||
|
|
cbb5b011e1 | ||
|
|
f5bff408a8 | ||
|
|
d7cfe4d3dc | ||
|
|
7be8f38c6b | ||
|
|
08a7e605ce | ||
|
|
4b57db5893 | ||
|
|
8b1ae3f3c9 | ||
|
|
77d35a5928 | ||
|
|
323d409e6c | ||
|
|
9f2f2b7b69 | ||
|
|
b44fa7beca | ||
|
|
26bba23890 | ||
|
|
6d4e310b8e | ||
|
|
6726530229 | ||
|
|
8351352541 | ||
|
|
3f9e8d79ea | ||
|
|
685f2328bd | ||
|
|
746567a8a7 | ||
|
|
c116c41c42 | ||
|
|
3768a7de37 | ||
|
|
0c0fed2484 | ||
|
|
11ef0ee54f | ||
|
|
33ae531e3a | ||
|
|
8cc9924751 | ||
|
|
c329ab863b | ||
|
|
41820ea316 | ||
|
|
bf00f80716 | ||
|
|
9baf0c74e4 | ||
|
|
b59ccdf26f | ||
|
|
8b06049bf8 | ||
|
|
9cae978923 | ||
|
|
311d914b96 | ||
|
|
592cb4ef9e | ||
|
|
ec2db7f2d0 | ||
|
|
71eab7ba9b | ||
|
|
5e07171d60 | ||
|
|
3f73e3d964 | ||
|
|
0045a1e608 | ||
|
|
0ebe78b4a2 | ||
|
|
61c3379298 | ||
|
|
44866f3316 | ||
|
|
4bb8ce8779 | ||
|
|
95252be5f0 | ||
|
|
58eb6a8b5f | ||
|
|
52f6a79e01 | ||
|
|
129f79d44b | ||
|
|
385c3eb563 | ||
|
|
e56be51b45 | ||
|
|
24ae65b254 | ||
|
|
d5dffbacbd | ||
|
|
c6ae969a82 | ||
|
|
005a9fdc01 | ||
|
|
2e74f87ae0 | ||
|
|
f505d4d911 | ||
|
|
65cd32125b | ||
|
|
8ada6b121e | ||
|
|
b9a87efb0d | ||
|
|
89485a82d2 | ||
|
|
451f87c6b4 | ||
|
|
c3cb5a3221 | ||
|
|
458609ed2e | ||
|
|
fcec8113f3 | ||
|
|
5f14d84ad2 | ||
|
|
ebbd882ee4 | ||
|
|
0506e19a66 | ||
|
|
ecc62e4f54 | ||
|
|
2b95eb4e4d | ||
|
|
bcde9e0f74 | ||
|
|
114501ebc7 | ||
|
|
ebab7c0867 | ||
|
|
0e2270fb6e | ||
|
|
593493ec0c | ||
|
|
d92898a806 | ||
|
|
7890e46551 | ||
|
|
ef942a6209 | ||
|
|
67d13bf634 | ||
|
|
fdde916388 | ||
|
|
31314d201b | ||
|
|
a29a949c51 | ||
|
|
cc1ce8c5f8 | ||
|
|
a21bf4ebe5 | ||
|
|
3d0420dbd9 | ||
|
|
37c4a9d6ef | ||
|
|
f652bda0a4 | ||
|
|
04c74dd30f | ||
|
|
2f256291ae | ||
|
|
272565243d | ||
|
|
bcb66a4145 | ||
|
|
2d9368062e | ||
|
|
4670c393a9 | ||
|
|
b110bacf61 | ||
|
|
6552f7b865 | ||
|
|
78afdc0af5 | ||
|
|
ad6cd7985a | ||
|
|
a61661776d | ||
|
|
1a9ebddcab | ||
|
|
7ab907a854 | ||
|
|
68a34f7cdb | ||
|
|
da4ff3082d | ||
|
|
9c05a59b5f | ||
|
|
6780146505 | ||
|
|
2758833fc6 | ||
|
|
2786d7ec46 | ||
|
|
945a2006c9 | ||
|
|
b9e574e32f | ||
|
|
34f1ef1680 | ||
|
|
4ac4310bc1 | ||
|
|
a10997ca66 | ||
|
|
0e52a4c7dc | ||
|
|
a4b3e22c2b | ||
|
|
441bd7c754 | ||
|
|
ddbd32d1cb | ||
|
|
a5b0cbeaea | ||
|
|
c6f3b2b1ce | ||
|
|
3d869d9fa1 | ||
|
|
7a5229741f | ||
|
|
78e0c2d8fa | ||
|
|
5928984069 | ||
|
|
61a472f108 | ||
|
|
e45f78ea20 | ||
|
|
b3ae9d88eb | ||
|
|
f7f26537be | ||
|
|
96848fc6d4 | ||
|
|
51e6f0c79f | ||
|
|
4f94ad40b7 | ||
|
|
43e1eb9939 | ||
|
|
1f6d7de861 | ||
|
|
bd623c2daf | ||
|
|
40c71c2102 | ||
|
|
72a1580eff | ||
|
|
9e2404a0d7 | ||
|
|
7dd84d1518 | ||
|
|
d800db5d09 | ||
|
|
2714ccff38 | ||
|
|
1d493e411b | ||
|
|
2a0c222f2d | ||
|
|
641d68de0e | ||
|
|
2dd0fd660b | ||
|
|
bb5441c7bc | ||
|
|
eeea9e662b | ||
|
|
8d4874e240 | ||
|
|
a8ba4a1a8e | ||
|
|
0c027247ec | ||
|
|
164cb39c1b | ||
|
|
52503de645 | ||
|
|
83b8b5de61 | ||
|
|
3e326c4e62 | ||
|
|
a6b0690416 | ||
|
|
dcd007c5c7 | ||
|
|
eb090e4874 | ||
|
|
4b716584f7 | ||
|
|
4bc348f39f | ||
|
|
42a3ee90e4 | ||
|
|
e4bd59b2ea | ||
|
|
9310e3c258 | ||
|
|
96f4896c84 | ||
|
|
f5d6407ec9 | ||
|
|
dc6d688c96 | ||
|
|
65ebbf179f | ||
|
|
2246e818b9 | ||
|
|
f32f0ee215 | ||
|
|
533e85d058 | ||
|
|
4f2c750dbb | ||
|
|
aa64385bc6 | ||
|
|
e80d0689ad | ||
|
|
e7a077b820 | ||
|
|
0c58a8569e | ||
|
|
ca7d577d54 | ||
|
|
0c6315458f | ||
|
|
61f9aa6293 | ||
|
|
7d950e2b8d | ||
|
|
2d18ff6561 | ||
|
|
4c2307ee49 | ||
|
|
6e2e04bf7f | ||
|
|
94d84c2516 | ||
|
|
2fcb000466 | ||
|
|
3be965ed7f | ||
|
|
77d067613d | ||
|
|
5e3702856f | ||
|
|
1bb6c8232b | ||
|
|
bb6f133db9 | ||
|
|
72c3287b48 | ||
|
|
aa12e78421 | ||
|
|
319caf5275 | ||
|
|
d074a9e744 | ||
|
|
8f6eb12b3d | ||
|
|
1477b241be | ||
|
|
848330c188 | ||
|
|
33b728fdc3 | ||
|
|
aec4069eca | ||
|
|
2221f8afb0 | ||
|
|
08b845a51e | ||
|
|
39561ee4e7 | ||
|
|
9879eef3c6 | ||
|
|
7eda47a9b3 | ||
|
|
fe1d4c345d | ||
|
|
bc818b7873 | ||
|
|
f850fe5404 | ||
|
|
1fb3c73e51 | ||
|
|
f8a86d27dd | ||
|
|
59d222db72 | ||
|
|
f4ad9cd17a | ||
|
|
da93883b6c | ||
|
|
d86d81e63d | ||
|
|
0610d977f3 | ||
|
|
e11fb476b1 | ||
|
|
28baa2ab7f | ||
|
|
7b97202ef8 | ||
|
|
e6a71f44ca | ||
|
|
2646fa9eda | ||
|
|
95f71adcef | ||
|
|
9817158f2e | ||
|
|
0e0faf07c2 | ||
|
|
1009c8945e | ||
|
|
cb8cc6b274 | ||
|
|
e2ea78578b | ||
|
|
4d494b891c | ||
|
|
82ded7d160 | ||
|
|
7d211bdb8f | ||
|
|
f1abb402fb | ||
|
|
a16a96664f | ||
|
|
9edad84198 | ||
|
|
debf2f5416 | ||
|
|
5107725252 | ||
|
|
c6dfe43119 | ||
|
|
24e0d2c815 | ||
|
|
ebf895d1b9 | ||
|
|
bceda43ff2 | ||
|
|
d69597636c | ||
|
|
9ff66b9394 | ||
|
|
d28d3a92e5 | ||
|
|
21d14ab3c7 | ||
|
|
ed08417fc2 | ||
|
|
39f9911e67 | ||
|
|
da5899b5d3 | ||
|
|
0cc45d085a | ||
|
|
cce456242b | ||
|
|
0eee44fb0d | ||
|
|
597d568183 | ||
|
|
fee6a56af1 | ||
|
|
f7b094819e | ||
|
|
f7842b5adc | ||
|
|
58f2ec91fb | ||
|
|
61206a3610 | ||
|
|
c18392d036 | ||
|
|
7fe1aa443b | ||
|
|
044d9cb4dc | ||
|
|
f8795fa181 | ||
|
|
b456fa75e0 | ||
|
|
9832ec0b1d | ||
|
|
bd3acc634e | ||
|
|
f32ee571ac | ||
|
|
826d4de16c | ||
|
|
b7ac721593 | ||
|
|
1566762729 | ||
|
|
f0b758fd4b | ||
|
|
0df04c84d2 | ||
|
|
6f1b91b1e5 | ||
|
|
95af905b7d | ||
|
|
67efe31e63 | ||
|
|
46c7e89363 | ||
|
|
9d221df259 | ||
|
|
fd2a123e20 | ||
|
|
4696b6563c | ||
|
|
1a0e72c468 | ||
|
|
f6f749d583 | ||
|
|
72f0f8602d | ||
|
|
6933c42a1b | ||
|
|
349b117c8c | ||
|
|
80b13b2ad7 | ||
|
|
2825f8540b | ||
|
|
fed3d82898 | ||
|
|
1805f130bc | ||
|
|
86baf3c81e | ||
|
|
37e6778589 | ||
|
|
b368925dfc | ||
|
|
3e848ebfe3 | ||
|
|
253180b02f | ||
|
|
07ba868a26 | ||
|
|
31846074a2 | ||
|
|
dc51545583 | ||
|
|
2696b5ca9b | ||
|
|
8c8f62374d | ||
|
|
de7b94ea48 | ||
|
|
38df724e66 | ||
|
|
180de5b9c9 | ||
|
|
a7b13df315 | ||
|
|
6d878f5cc8 | ||
|
|
c216213081 | ||
|
|
be4dda141b | ||
|
|
e4b45eef88 | ||
|
|
97d83364f3 | ||
|
|
deaf6bfdb9 | ||
|
|
ef19892ae9 | ||
|
|
a6af324c8d | ||
|
|
9608f6f2d7 | ||
|
|
fdd45c94d6 | ||
|
|
374fe7d868 | ||
|
|
d93a89ca92 | ||
|
|
3c2a0f1fbf | ||
|
|
d3b06c30de | ||
|
|
7ef6b4fcda | ||
|
|
5352de1b01 | ||
|
|
5574747054 | ||
|
|
5b3f11d09b | ||
|
|
f9e88fc88f | ||
|
|
f2c94dc31d | ||
|
|
400c8938b7 | ||
|
|
0d45cc7479 | ||
|
|
4cfe825b61 | ||
|
|
b723e24ac8 | ||
|
|
f48f4b85d8 | ||
|
|
8822f0303d | ||
|
|
6175a8c8c1 | ||
|
|
0da8f44922 | ||
|
|
05f1fcfb55 | ||
|
|
cdf3c16cd9 | ||
|
|
a7bdd1798e | ||
|
|
ac47fc602b | ||
|
|
29cb8fbdfc | ||
|
|
ee329f0def | ||
|
|
e58e4d65e3 | ||
|
|
9286784ce5 | ||
|
|
9ded80448c | ||
|
|
d82dd63e11 | ||
|
|
9e8d366f38 | ||
|
|
3eb742d0d1 | ||
|
|
df6159fa62 | ||
|
|
8de5135f15 | ||
|
|
f3b4a53666 | ||
|
|
a0d37cf2b8 | ||
|
|
533899da09 | ||
|
|
93fbc8b1dd | ||
|
|
6157df4ebe | ||
|
|
069743038a | ||
|
|
07823e4109 | ||
|
|
0a8d7562ca | ||
|
|
2c8dea7a45 | ||
|
|
cf9bcb09d5 | ||
|
|
19a20f5b3e | ||
|
|
023251d090 | ||
|
|
23e9ee4ae2 | ||
|
|
2e8289d4dc | ||
|
|
b2a8b643e7 | ||
|
|
64a91abd12 | ||
|
|
4076fec42f | ||
|
|
1b80ae3871 | ||
|
|
eff8f7fa7a | ||
|
|
de4608c0c3 | ||
|
|
4ed6186de7 | ||
|
|
1734083219 | ||
|
|
4c512fc0d0 | ||
|
|
eb78d8229f | ||
|
|
f279b32eb0 | ||
|
|
336f47a9ca | ||
|
|
fd2bc8a719 | ||
|
|
f831dae65a | ||
|
|
c4fd6650c3 | ||
|
|
0ab6db4a97 | ||
|
|
593a78cd8d | ||
|
|
c50a2d87f1 | ||
|
|
b6056e9b0f | ||
|
|
660002dde8 | ||
|
|
3031bac5b6 | ||
|
|
3020f3cc15 | ||
|
|
2db8e2e1ea | ||
|
|
df3beb6be2 | ||
|
|
86f2cacc6a | ||
|
|
6a37b9649d | ||
|
|
6f794380ac | ||
|
|
cf5a092462 | ||
|
|
8828d2e59e | ||
|
|
fe78af36a9 | ||
|
|
1a330cbe89 | ||
|
|
09a8cd30d2 | ||
|
|
7ca04e2e19 | ||
|
|
6daf84faee | ||
|
|
b1c3ab0ee4 | ||
|
|
84234bd708 | ||
|
|
79de7ad301 | ||
|
|
b62a88aa0f | ||
|
|
936e0ddf22 | ||
|
|
470bbd9d25 | ||
|
|
843632b2e4 | ||
|
|
a9e54a069e | ||
|
|
1c2b052d15 | ||
|
|
a7911429ff | ||
|
|
eb865bccab | ||
|
|
c03b5b5014 | ||
|
|
cecd3d2cae | ||
|
|
8ff6807a3a | ||
|
|
563cb9a3c7 | ||
|
|
b1b2d0ed3a | ||
|
|
cda34f372a | ||
|
|
f82845548c | ||
|
|
972cf9bd76 | ||
|
|
8ea197c21d | ||
|
|
dcbc1af0e7 | ||
|
|
2df8ce3575 | ||
|
|
5a67b9ea89 | ||
|
|
0862732739 | ||
|
|
f3cc2a62da | ||
|
|
75288f16ea | ||
|
|
a185ab01df | ||
|
|
e184763b91 | ||
|
|
c890d1b8be | ||
|
|
ddb173ebb9 | ||
|
|
456a55907d | ||
|
|
dd91b037ea | ||
|
|
fe83402210 | ||
|
|
d3a3fd67b9 | ||
|
|
a4d173aa2c | ||
|
|
e706256fb1 | ||
|
|
2664af0db5 | ||
|
|
a710b6ffe3 | ||
|
|
066c477f9b | ||
|
|
38ab23b927 | ||
|
|
add5f1754c | ||
|
|
6468c01a79 | ||
|
|
0d1c4d367a | ||
|
|
7fba73f0df | ||
|
|
ff904f50cb | ||
|
|
e1b96a7a74 | ||
|
|
db87d6ef8a | ||
|
|
95390670c4 | ||
|
|
5e198b248f | ||
|
|
f4b92386bd | ||
|
|
39c60ba387 | ||
|
|
39387b828c | ||
|
|
e845a14f26 | ||
|
|
d0fe9671f0 | ||
|
|
f82caf2b09 | ||
|
|
30f77bfbff | ||
|
|
bf20ea976f | ||
|
|
e33bd22cb7 | ||
|
|
33fed71626 | ||
|
|
7e339b9a0a | ||
|
|
bc8c5acb66 | ||
|
|
0a0dff877f | ||
|
|
54e4c377d8 | ||
|
|
ff78acf4c5 | ||
|
|
2b726730e9 | ||
|
|
41f3f4d816 | ||
|
|
cb591f77e9 | ||
|
|
d508f7b4ed | ||
|
|
1c8388f3fd | ||
|
|
93af3900af | ||
|
|
13ae7ecf59 | ||
|
|
76a7c6dad8 | ||
|
|
93e830e09e | ||
|
|
0151fcc626 | ||
|
|
2966b9007c | ||
|
|
cec868d45f | ||
|
|
0488bbc8a1 | ||
|
|
4a766eb9e7 | ||
|
|
7c7661375c | ||
|
|
791fa36d73 | ||
|
|
6faf1ce65d | ||
|
|
f4bc71af7e | ||
|
|
7872430235 | ||
|
|
5621af6a4c | ||
|
|
bcf4945ea1 | ||
|
|
be4403d8ec | ||
|
|
4acf2aad38 | ||
|
|
5c32f6a1f2 | ||
|
|
40f81fbf2e | ||
|
|
f4d9f226f6 | ||
|
|
4d52c559c6 | ||
|
|
4cad5382df | ||
|
|
888110152f | ||
|
|
61e0e9ecd2 | ||
|
|
53c694630c | ||
|
|
dc3383a237 | ||
|
|
43d7a4b9f1 | ||
|
|
e2669cb5d3 | ||
|
|
7e89a0bf42 | ||
|
|
680880d857 | ||
|
|
b08d026eec | ||
|
|
e9c2aeeca0 | ||
|
|
5fd178783f | ||
|
|
ddcc8a149d | ||
|
|
0f30157be2 | ||
|
|
80d3698481 | ||
|
|
07fb894c0e | ||
|
|
5ca9654b2f | ||
|
|
88ba3f3ff3 | ||
|
|
03a3685f1d | ||
|
|
fe12941494 | ||
|
|
12eaa0a9b3 | ||
|
|
782f8e1349 | ||
|
|
cece40ed47 | ||
|
|
4e7250c4c2 | ||
|
|
80f56ed41d | ||
|
|
6fd67a8fd2 | ||
|
|
24d16438c1 | ||
|
|
2f5de232e1 | ||
|
|
f8189b4874 | ||
|
|
1f9cac4e08 | ||
|
|
34b67b9ed9 | ||
|
|
27af2f263c | ||
|
|
6c18c72620 | ||
|
|
2c41851564 | ||
|
|
8df79730d1 | ||
|
|
c237c5bdcd | ||
|
|
41175d8ff6 | ||
|
|
b1b28fa365 | ||
|
|
4bf3148596 | ||
|
|
0f29455dc5 | ||
|
|
826b702fb9 | ||
|
|
b10f19b139 | ||
|
|
6b1ac2002b | ||
|
|
5b91e5c685 | ||
|
|
07b9e5f16a | ||
|
|
c4487d4aec | ||
|
|
9815acf6f7 | ||
|
|
2a94921f58 | ||
|
|
112ee94d79 | ||
|
|
8ae51cfd36 | ||
|
|
e6feb15704 | ||
|
|
fabff5954b | ||
|
|
d6b6df042d | ||
|
|
5db7b5f6c4 | ||
|
|
1b679bd8ec | ||
|
|
1e4660583b | ||
|
|
c6b16525e7 | ||
|
|
6c144493e0 | ||
|
|
4dd31cb6db | ||
|
|
60bc923ca0 | ||
|
|
71f2e67321 | ||
|
|
60b2fdb319 | ||
|
|
13739ca558 | ||
|
|
1a3ffb05ab | ||
|
|
beb5587b52 | ||
|
|
d8eefb1293 | ||
|
|
e0c1fd1d3c | ||
|
|
788124e144 | ||
|
|
c8a337dd90 | ||
|
|
6332e73e38 | ||
|
|
7e443c8aef | ||
|
|
c0b2be170b | ||
|
|
6bc6328ad2 | ||
|
|
c469f5b01e | ||
|
|
f7f666c383 | ||
|
|
e11fd76b35 | ||
|
|
d9ede0fd4f | ||
|
|
061217791d | ||
|
|
418099f893 | ||
|
|
3925926693 | ||
|
|
eb52095081 | ||
|
|
635acfd9af | ||
|
|
a4a06d1331 | ||
|
|
3f58d0ae0c | ||
|
|
0f6ff55f80 | ||
|
|
1cf462a989 | ||
|
|
124afa9be7 | ||
|
|
d8334d1515 | ||
|
|
1a291b5ef4 | ||
|
|
45e8cfabb2 | ||
|
|
411ef0b3fb | ||
|
|
4b14b2a6a5 | ||
|
|
c3c6aec2f1 | ||
|
|
5e74e44ec1 | ||
|
|
74d257e413 | ||
|
|
38829421a9 | ||
|
|
59407a71e9 | ||
|
|
11c3668e5f | ||
|
|
7572dea71c | ||
|
|
5983b606fe | ||
|
|
6a595bffbb | ||
|
|
e9c667f1e9 | ||
|
|
9bbbc94dfc | ||
|
|
a61f6504ab | ||
|
|
7a2a409a11 | ||
|
|
5bfade48dc | ||
|
|
5c32b364f2 | ||
|
|
cbb00668d9 | ||
|
|
ef729a907a | ||
|
|
92754242b6 | ||
|
|
3149fa7315 | ||
|
|
75de33bf7a | ||
|
|
e4e3111ed2 | ||
|
|
d501217dc7 | ||
|
|
9dd803290f | ||
|
|
da23a92ca8 | ||
|
|
643d61bad0 | ||
|
|
1fce46471b | ||
|
|
ca98a8ecc2 | ||
|
|
0c7d93f88b | ||
|
|
136f69fe28 | ||
|
|
3c10cfd594 | ||
|
|
8d09e6d0e6 | ||
|
|
acb3448358 | ||
|
|
67a1cb9d1a | ||
|
|
8d81266e72 | ||
|
|
8864353f5a | ||
|
|
579dfbe5c9 | ||
|
|
6256227922 | ||
|
|
978d1c7a61 | ||
|
|
47f5b04ed8 | ||
|
|
27a22e10ab | ||
|
|
0ebffa1e63 | ||
|
|
d3eeb05cbc | ||
|
|
a263663312 | ||
|
|
330794b27b | ||
|
|
8ec6684000 | ||
|
|
0b40b77802 | ||
|
|
cea08dba5a | ||
|
|
64c0ff1e39 | ||
|
|
2070c663e0 | ||
|
|
73c84bfb2a | ||
|
|
b4d1dd7f49 | ||
|
|
029c854003 | ||
|
|
aad8999275 | ||
|
|
87a621288d | ||
|
|
2f9ae7e3b1 | ||
|
|
2d2eee4a4c | ||
|
|
7569bb4cca | ||
|
|
e4090ac84b | ||
|
|
b34554a2d4 | ||
|
|
0d16963705 | ||
|
|
c1c459e4fc | ||
|
|
739d13fb04 | ||
|
|
e74d613808 | ||
|
|
117d5e0796 | ||
|
|
4ccc89098e | ||
|
|
4455b128a9 | ||
|
|
c72063eee5 | ||
|
|
a96965c1b9 | ||
|
|
1b08d32314 | ||
|
|
9df6f3e28a | ||
|
|
296b4a8ce5 | ||
|
|
aad5fa8786 | ||
|
|
c159448710 | ||
|
|
d6d5d2420a | ||
|
|
187e7db6d2 | ||
|
|
66fd334d8b | ||
|
|
ca840a67e5 | ||
|
|
9efda9be12 | ||
|
|
be818f184e | ||
|
|
b3cf525630 | ||
|
|
b1b5b4d304 | ||
|
|
4686c78ab3 | ||
|
|
9b7631e3c4 | ||
|
|
f1a68fa299 | ||
|
|
e1a7352540 | ||
|
|
db58260f1a | ||
|
|
b89102da3e | ||
|
|
a56730468d | ||
|
|
f1b7c35f4c | ||
|
|
81215139d2 | ||
|
|
05b1d54fe0 | ||
|
|
5f69fdd67e | ||
|
|
dd1e8b59aa | ||
|
|
9703ba0bd9 | ||
|
|
9f66d28a3e | ||
|
|
e1df5b6ed6 | ||
|
|
4fc3e34eb6 | ||
|
|
f77a4ff0b2 | ||
|
|
23d859938a | ||
|
|
63548bea00 | ||
|
|
ea65148af5 | ||
|
|
251b2c7065 | ||
|
|
3d86d7f8b9 | ||
|
|
1b6a4bf31e | ||
|
|
05e1a1192a | ||
|
|
3a8e1c613d | ||
|
|
b67c3a62a4 | ||
|
|
3232743319 | ||
|
|
7ea80d5b8f | ||
|
|
46266cdb0e | ||
|
|
3ac5002791 | ||
|
|
b2b1d33a8c | ||
|
|
1265fea287 | ||
|
|
c372ecde65 | ||
|
|
eeaa441bef | ||
|
|
4e977562f1 | ||
|
|
7d7050da5d | ||
|
|
f7d6020389 | ||
|
|
c5be0f5234 | ||
|
|
e11ff2ddd4 | ||
|
|
ee950bba1e | ||
|
|
d2c69e8e11 | ||
|
|
375b1dcb68 | ||
|
|
3da04fa93a | ||
|
|
4560b1a302 | ||
|
|
dadec0b012 | ||
|
|
cf7f65dc6e | ||
|
|
4956ec2cda | ||
|
|
bba3f1e7b5 | ||
|
|
4795848566 | ||
|
|
672b10a953 | ||
|
|
28b0f7a183 | ||
|
|
a621240c1f | ||
|
|
5ee9de601e | ||
|
|
a15017de97 | ||
|
|
9085f861ee | ||
|
|
4791137a31 | ||
|
|
5a8cf21e69 | ||
|
|
f9ee192038 | ||
|
|
96f0f3af27 | ||
|
|
b66218302d | ||
|
|
a9cc6a3179 | ||
|
|
4619a044bb | ||
|
|
b3d7219b11 | ||
|
|
54cad25e87 | ||
|
|
25e5fee4e8 | ||
|
|
8b6696bf7b | ||
|
|
df3ed64dc4 | ||
|
|
08833c4a35 | ||
|
|
850e3260ba | ||
|
|
ed26decd58 | ||
|
|
db86bff8e6 | ||
|
|
466fe9b7bb | ||
|
|
d4de92ddc7 | ||
|
|
0847fa35c1 | ||
|
|
7c80281ce2 | ||
|
|
cf2d57809c | ||
|
|
4e99177686 | ||
|
|
8d8401251f | ||
|
|
7936381467 | ||
|
|
49f418c795 | ||
|
|
5bc100ea76 | ||
|
|
f7d35eb206 | ||
|
|
b50b2c9673 | ||
|
|
177fc6a406 | ||
|
|
1f64537225 | ||
|
|
67ae93831e | ||
|
|
1922d35ce9 | ||
|
|
7058ab2052 | ||
|
|
e4f42601ea | ||
|
|
dec031469a | ||
|
|
f292bd8ab0 | ||
|
|
12a269ed75 | ||
|
|
6fc1fb0a9e | ||
|
|
5fcc4928e8 | ||
|
|
d6fd53875e | ||
|
|
03e890359b | ||
|
|
bb877fcee4 | ||
|
|
ec26374ae9 | ||
|
|
1d03334180 | ||
|
|
0499b7d385 | ||
|
|
1fc52d83b4 | ||
|
|
8025af6a41 | ||
|
|
4d4f1f1476 | ||
|
|
b6bf6bce7c | ||
|
|
a292b28a23 | ||
|
|
078d784645 | ||
|
|
f4463410fc | ||
|
|
661f5d2d1b | ||
|
|
b8e07b8bcf | ||
|
|
5817b48da3 | ||
|
|
0a4ad93156 | ||
|
|
cb37849bec | ||
|
|
3a8707f6c1 | ||
|
|
3574e41133 | ||
|
|
43bcc52ff0 | ||
|
|
d63142d209 | ||
|
|
38d7735014 | ||
|
|
d5889c90f5 | ||
|
|
4b4e7a89d3 | ||
|
|
905d6bc9af | ||
|
|
000cc244e0 | ||
|
|
e8948dd4f5 | ||
|
|
05613baad6 | ||
|
|
2a5526fc31 | ||
|
|
95a61af91d | ||
|
|
cc2b7a4748 | ||
|
|
7f93ae3354 | ||
|
|
1d5ed7d1c8 | ||
|
|
ce29157fb8 | ||
|
|
339cb25d7c | ||
|
|
611cd2c638 | ||
|
|
751f4f7c40 | ||
|
|
dc85ea7408 | ||
|
|
bd08a6e73f | ||
|
|
205f8384dd | ||
|
|
07ff90d387 | ||
|
|
afc561013b | ||
|
|
d3f274fe27 | ||
|
|
59628f0f3b | ||
|
|
0c95559d82 | ||
|
|
ed80e9b6a4 | ||
|
|
2c56711551 | ||
|
|
d6f4f618f9 | ||
|
|
0b7adf8e28 | ||
|
|
794efb3af8 | ||
|
|
73aebe0bd2 | ||
|
|
33f32df33f | ||
|
|
278c79d6fa | ||
|
|
2982aa7770 | ||
|
|
42c0035e04 | ||
|
|
445f588913 | ||
|
|
91a58e5a2e | ||
|
|
92aa05154c | ||
|
|
301124f1c0 | ||
|
|
add2c92940 | ||
|
|
e463424ee4 | ||
|
|
7c5a530eb0 | ||
|
|
dd13ad657d | ||
|
|
64d379f1d6 | ||
|
|
16e920ee84 | ||
|
|
b9d3e1dab6 | ||
|
|
086519367d | ||
|
|
bf40c52e7e | ||
|
|
2e730b7623 | ||
|
|
290694314f | ||
|
|
3d52939547 | ||
|
|
3e8a692373 | ||
|
|
2f95e5426e | ||
|
|
7dd4ce4e7e | ||
|
|
88c58f44f5 | ||
|
|
52d5678c5d | ||
|
|
6f24cd1a73 | ||
|
|
64a1f19e19 | ||
|
|
41055b8cac | ||
|
|
6ad702ea2d | ||
|
|
0500943dd6 | ||
|
|
65619522a6 | ||
|
|
526ec2dfec | ||
|
|
e72f20e738 | ||
|
|
9b2b98e9ce | ||
|
|
382bfaa035 | ||
|
|
85d5df05f9 | ||
|
|
e2725ce23e | ||
|
|
784622142f | ||
|
|
54209c1613 | ||
|
|
db73e3f007 | ||
|
|
44a5d37f14 | ||
|
|
ee44cea02e | ||
|
|
950ae76120 | ||
|
|
0e686b5bb1 | ||
|
|
0b2b88b553 | ||
|
|
09f7a90491 | ||
|
|
07cedb8a22 | ||
|
|
cd8d899fb5 | ||
|
|
3c1f6075fe | ||
|
|
13847834e3 | ||
|
|
6deace2b7a | ||
|
|
5d056dcf2d | ||
|
|
4aa0fb6dfa | ||
|
|
bd0bbed7a1 | ||
|
|
62c6ebf8ce | ||
|
|
e5c549c93c | ||
|
|
8b8b5f14e6 | ||
|
|
8b8c1aa6b4 | ||
|
|
bd722e8702 | ||
|
|
ae09695687 | ||
|
|
87b743010c | ||
|
|
5424c35ec5 | ||
|
|
f03b671cbc | ||
|
|
d347f9acbb | ||
|
|
53d4d91521 | ||
|
|
9b12772843 | ||
|
|
846a33fe4a | ||
|
|
e2ae89c0a2 | ||
|
|
2a599da33e | ||
|
|
c04c93d499 | ||
|
|
5a615ab619 | ||
|
|
81638a1857 | ||
|
|
b7baf37cd8 | ||
|
|
fa39a9be3b | ||
|
|
68c2b8728c | ||
|
|
1bc0054344 | ||
|
|
7f16b6fa1a | ||
|
|
edd76774ed | ||
|
|
8873da1ba0 | ||
|
|
7481a410f8 | ||
|
|
5acf3b53fa | ||
|
|
2d93f3552a | ||
|
|
dd7f01ddd6 | ||
|
|
745f6a842f | ||
|
|
b089bedf9c | ||
|
|
994d3064f7 | ||
|
|
996308b0c3 | ||
|
|
4cb62a94e6 | ||
|
|
982fdcb596 | ||
|
|
5478e1b4ed | ||
|
|
53b46d22b1 | ||
|
|
a06bac9851 | ||
|
|
f1b0c1624a | ||
|
|
422deaa4ff | ||
|
|
cc02a1d22b | ||
|
|
a6f075d815 | ||
|
|
fa3e7e77fe | ||
|
|
28dffdb8cb | ||
|
|
03a1b2e150 | ||
|
|
0db4cd2bf0 | ||
|
|
49cf452fd7 | ||
|
|
4d1da86d47 | ||
|
|
78f81ac4d5 | ||
|
|
cc4920a0be | ||
|
|
f7d336248a | ||
|
|
132424cae7 | ||
|
|
b4a58c08d3 | ||
|
|
cb55e18a60 | ||
|
|
7eb95a982e | ||
|
|
57a0dd788c | ||
|
|
38720f5550 | ||
|
|
903eef70a7 | ||
|
|
698c4e92b2 | ||
|
|
24a39893e6 | ||
|
|
f2f356157c | ||
|
|
ef1b71d7d0 | ||
|
|
e4c08c7b9b | ||
|
|
b137db506f | ||
|
|
90165c24ba | ||
|
|
0a88403329 | ||
|
|
f69aec2c00 | ||
|
|
9d6e567937 | ||
|
|
a672e59a95 | ||
|
|
37efdf0122 | ||
|
|
7da4b53df7 | ||
|
|
7ec8185eef | ||
|
|
fabb4aa0d9 | ||
|
|
7ce2b30cb2 | ||
|
|
72792890e7 | ||
|
|
7788435903 | ||
|
|
1d65901641 | ||
|
|
ef32128612 | ||
|
|
192aa2077b | ||
|
|
2184f0cbb6 | ||
|
|
87aa733064 | ||
|
|
501cc9b1fd | ||
|
|
973f15835e | ||
|
|
715f28b1e5 | ||
|
|
9792527832 | ||
|
|
2cf0654d11 | ||
|
|
6e185d9ae5 | ||
|
|
a165013397 | ||
|
|
208477b493 | ||
|
|
b04cabc72e | ||
|
|
7860d677d3 | ||
|
|
0d714a753b | ||
|
|
709f7b0af6 | ||
|
|
882d6eafb6 | ||
|
|
ce1968a1b6 | ||
|
|
a4f36c7ed4 | ||
|
|
9bac47ce17 | ||
|
|
6fe0203930 | ||
|
|
a2009bba9b | ||
|
|
5ea3fe6dca | ||
|
|
5b915daefe | ||
|
|
82ea59d9e2 | ||
|
|
3708a7e3a1 | ||
|
|
ea3fa0a792 | ||
|
|
926f314d9f | ||
|
|
a4f72a6a83 | ||
|
|
f5dbcfd969 | ||
|
|
4671a174d4 | ||
|
|
6f149cb8cc | ||
|
|
bf4fb18dc3 | ||
|
|
2a03bbe226 | ||
|
|
1514072fd5 | ||
|
|
306a6635d6 | ||
|
|
980d977f16 | ||
|
|
98c877a107 | ||
|
|
e91ca7997b | ||
|
|
dfa1ea43c2 | ||
|
|
1b50bcab83 | ||
|
|
b0afd4cba0 | ||
|
|
33a2f88c39 | ||
|
|
e63307f3a6 | ||
|
|
069e4ef738 | ||
|
|
9c3852082a | ||
|
|
3da4d98340 | ||
|
|
c666fd308f | ||
|
|
9214f93ad1 | ||
|
|
9ef933d4f7 | ||
|
|
dc11c3524c | ||
|
|
7e18d69aa2 | ||
|
|
d29f4bc7e2 | ||
|
|
4b1ddd15b2 | ||
|
|
199ea74650 | ||
|
|
c2a8f6d05b | ||
|
|
1fece3047f | ||
|
|
64ada1d3fe | ||
|
|
917ec0fd76 | ||
|
|
4603d07e4f | ||
|
|
dc417be1d9 | ||
|
|
e888654085 | ||
|
|
b5775bfb0d | ||
|
|
db6b066b4b | ||
|
|
9e410b8749 | ||
|
|
e7efb0202b | ||
|
|
41abd8cbf2 | ||
|
|
aa6f67b731 | ||
|
|
6923892ae7 | ||
|
|
3f514760f9 | ||
|
|
db56405a9a | ||
|
|
4d889d4000 | ||
|
|
910c3c2398 | ||
|
|
327d1f8621 | ||
|
|
d6c8bcdb9f | ||
|
|
c4323eb9fc | ||
|
|
d191892815 | ||
|
|
abd401a327 | ||
|
|
a269af7029 | ||
|
|
01556dfadc | ||
|
|
e55377afd1 | ||
|
|
801546dc21 | ||
|
|
570f079cdc | ||
|
|
75d7c2cdfb | ||
|
|
ba5851969c | ||
|
|
939ed0ed87 | ||
|
|
39a8df64d0 | ||
|
|
47afcb7c20 | ||
|
|
b4f609e084 | ||
|
|
b1b26d4a6c | ||
|
|
e01c20a012 | ||
|
|
1cc006b89b | ||
|
|
72b4dccfbe | ||
|
|
3c79126acf | ||
|
|
4fb6e32107 | ||
|
|
d4aa4b6840 | ||
|
|
2bbf643579 | ||
|
|
cd340eb294 | ||
|
|
73af59317b | ||
|
|
f6d4c61e68 | ||
|
|
4fcead8540 | ||
|
|
3d4d961a6d | ||
|
|
625db08d3f | ||
|
|
9e29e3ef7c | ||
|
|
e2eb083cf8 | ||
|
|
8120a7ad66 | ||
|
|
46eeaa28da | ||
|
|
b1ee1e9376 | ||
|
|
968735b2a4 | ||
|
|
2e64660ff6 | ||
|
|
adbc9353f5 | ||
|
|
df89960182 | ||
|
|
8c903bc951 | ||
|
|
ff2fe3b8ca | ||
|
|
bbb2e6cd99 | ||
|
|
ddebae8eb3 | ||
|
|
ff9e1ebc9b | ||
|
|
0ef69135c7 | ||
|
|
58465a80ec | ||
|
|
436deb02be | ||
|
|
33773558d6 | ||
|
|
0ce72682bf | ||
|
|
75fcb78ec3 | ||
|
|
3d5117aa5e | ||
|
|
3febe34221 | ||
|
|
9b66e00e83 | ||
|
|
0e7b053798 | ||
|
|
5a2d063749 | ||
|
|
d96d50c5c5 | ||
|
|
bdbca9669f | ||
|
|
d04b28cf2d | ||
|
|
8929105c3d | ||
|
|
3ea19e5e01 | ||
|
|
7047b6985d | ||
|
|
ee94fb0509 | ||
|
|
748ef04e4a | ||
|
|
920c5ffbb3 | ||
|
|
b2d3e2ba97 | ||
|
|
424f78a593 | ||
|
|
3eda70aa65 | ||
|
|
c1751eb637 | ||
|
|
2907fef4f9 | ||
|
|
067950a344 | ||
|
|
18ab3822bf | ||
|
|
db65c7af47 | ||
|
|
1f5769ff5e | ||
|
|
c64e2a17c7 | ||
|
|
95e1e71b9e | ||
|
|
b4348a63a1 | ||
|
|
427513baaf | ||
|
|
e5dcbacc37 | ||
|
|
da9fa05a91 | ||
|
|
daebb849ce | ||
|
|
a302612c6b | ||
|
|
11a35b5856 | ||
|
|
3d146e4083 | ||
|
|
170c2dac21 | ||
|
|
cd55d863d3 | ||
|
|
62a052a9e4 | ||
|
|
fb2a1cc852 | ||
|
|
46432d62c3 | ||
|
|
cccd166037 | ||
|
|
9fcd828279 | ||
|
|
260f924840 | ||
|
|
6bcbd7e9c8 | ||
|
|
f2ba2bbbc5 | ||
|
|
1501f4da49 | ||
|
|
f72c04c044 | ||
|
|
4df9c2364a | ||
|
|
6ec540d89e | ||
|
|
bd4f0b2078 | ||
|
|
9e50c2a41e | ||
|
|
19a9e5f3c8 | ||
|
|
af4b38553d | ||
|
|
457630bfc1 | ||
|
|
49791bff45 | ||
|
|
8d791d2191 | ||
|
|
bf0609b2bb | ||
|
|
8eaed3bdca | ||
|
|
927b3c099f | ||
|
|
56907c6224 | ||
|
|
e214128b54 | ||
|
|
bfc182657b | ||
|
|
09d674c78d | ||
|
|
9bdade6314 | ||
|
|
ed1b564eeb | ||
|
|
75df238327 | ||
|
|
486455c6d7 | ||
|
|
43eb7fb452 | ||
|
|
289e90cc83 | ||
|
|
82f5394c3c | ||
|
|
431ca49021 | ||
|
|
9c9f9ace2e | ||
|
|
4865bc9b6a | ||
|
|
97eca2863b | ||
|
|
d2daa88d24 | ||
|
|
fc41f4fc22 | ||
|
|
2d95a94f55 | ||
|
|
77c4809964 | ||
|
|
cf50ce7fc7 | ||
|
|
9f3930005d | ||
|
|
7eb0c5da8e | ||
|
|
45f888c8f9 | ||
|
|
a05a531d6b | ||
|
|
782b3f920f | ||
|
|
462e454acf | ||
|
|
8a8f7310f6 | ||
|
|
d8c3b0c919 | ||
|
|
9d1d1e1c76 | ||
|
|
85ffdd8311 | ||
|
|
25ecdab2a0 | ||
|
|
83153e1905 | ||
|
|
6f68668801 | ||
|
|
5735ccb451 | ||
|
|
10eaaa26ba | ||
|
|
5795da46c7 | ||
|
|
e7e5711030 | ||
|
|
cbf020e7e6 | ||
|
|
3cbebd9c09 | ||
|
|
64f2e032e3 | ||
|
|
e00a8fd2e9 | ||
|
|
5a20006647 | ||
|
|
94743751bf | ||
|
|
f38632dd19 | ||
|
|
7760f47a27 | ||
|
|
69bf29b93b | ||
|
|
6c2b02112b | ||
|
|
486bb525e2 | ||
|
|
aedd309442 | ||
|
|
30f5eca6dd | ||
|
|
172475a9ef | ||
|
|
06ca258089 | ||
|
|
0573a3d533 | ||
|
|
3ec9dc0a45 | ||
|
|
e5f752b5fa | ||
|
|
cfb2e6b70a | ||
|
|
d3627af67f | ||
|
|
ed6ecbaa72 | ||
|
|
5a6ca0a717 | ||
|
|
53a6263930 | ||
|
|
fb050614e0 |
@@ -10,6 +10,11 @@ module.exports = {
|
||||
$Shape: true,
|
||||
},
|
||||
parser: 'babel-eslint',
|
||||
parserOptions: {
|
||||
ecmaFeatures: {
|
||||
legacyDecorators: true,
|
||||
},
|
||||
},
|
||||
rules: {
|
||||
'comma-dangle': ['error', 'always-multiline'],
|
||||
indent: 'off',
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
[options]
|
||||
esproposal.decorators=ignore
|
||||
esproposal.optional_chaining=enable
|
||||
include_warnings=true
|
||||
module.use_strict=true
|
||||
|
||||
|
||||
4
.gitignore
vendored
@@ -1,3 +1,4 @@
|
||||
/_book/
|
||||
/coverage/
|
||||
/node_modules/
|
||||
/lerna-debug.log
|
||||
@@ -8,6 +9,9 @@
|
||||
/packages/*/dist/
|
||||
/packages/*/node_modules/
|
||||
|
||||
/packages/vhd-cli/src/commands/index.js
|
||||
|
||||
/packages/xen-api/examples/node_modules/
|
||||
/packages/xen-api/plot.dat
|
||||
|
||||
/packages/xo-server/.xo-server.*
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
language: node_js
|
||||
node_js:
|
||||
- stable
|
||||
#- stable # disable for now due to an issue of indirect dep upath with Node 9
|
||||
- 8
|
||||
- 6
|
||||
|
||||
@@ -12,6 +12,7 @@ addons:
|
||||
packages:
|
||||
- qemu-utils
|
||||
- blktap-utils
|
||||
- vmdk-stream-converter
|
||||
|
||||
before_install:
|
||||
- curl -o- -L https://yarnpkg.com/install.sh | bash
|
||||
|
||||
@@ -1,40 +1,60 @@
|
||||
'use strict'
|
||||
|
||||
const PLUGINS_RE = /^(?:@babel\/plugin-.+|babel-plugin-lodash)$/
|
||||
const PLUGINS_RE = /^(?:@babel\/|babel-)plugin-.+$/
|
||||
const PRESETS_RE = /^@babel\/preset-.+$/
|
||||
|
||||
const NODE_ENV = process.env.NODE_ENV || 'development'
|
||||
const __PROD__ = NODE_ENV === 'production'
|
||||
const __TEST__ = NODE_ENV === 'test'
|
||||
|
||||
module.exports = function (pkg, plugins, presets) {
|
||||
plugins === undefined && (plugins = {})
|
||||
const configs = {
|
||||
'@babel/plugin-proposal-decorators': {
|
||||
legacy: true,
|
||||
},
|
||||
'@babel/plugin-proposal-pipeline-operator': {
|
||||
proposal: 'minimal',
|
||||
},
|
||||
'@babel/preset-env' (pkg) {
|
||||
return {
|
||||
debug: !__TEST__,
|
||||
|
||||
presets === undefined && (presets = {})
|
||||
presets['@babel/preset-env'] = {
|
||||
debug: !__TEST__,
|
||||
loose: true,
|
||||
shippedProposals: true,
|
||||
targets: __PROD__
|
||||
? (() => {
|
||||
// disabled until https://github.com/babel/babel/issues/8323 is resolved
|
||||
// loose: true,
|
||||
|
||||
shippedProposals: true,
|
||||
targets: (() => {
|
||||
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' },
|
||||
useBuiltIns: '@babel/polyfill' in (pkg.dependencies || {}) && 'usage',
|
||||
}
|
||||
return { browsers: pkg.browserslist, node }
|
||||
})(),
|
||||
useBuiltIns: '@babel/polyfill' in (pkg.dependencies || {}) && 'usage',
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
const getConfig = (key, ...args) => {
|
||||
const config = configs[key]
|
||||
return config === undefined
|
||||
? {}
|
||||
: typeof config === 'function'
|
||||
? config(...args)
|
||||
: config
|
||||
}
|
||||
|
||||
module.exports = function (pkg, plugins, presets) {
|
||||
plugins === undefined && (plugins = {})
|
||||
presets === undefined && (presets = {})
|
||||
|
||||
Object.keys(pkg.devDependencies || {}).forEach(name => {
|
||||
if (!(name in presets) && PLUGINS_RE.test(name)) {
|
||||
plugins[name] = {}
|
||||
plugins[name] = getConfig(name, pkg)
|
||||
} else if (!(name in presets) && PRESETS_RE.test(name)) {
|
||||
presets[name] = {}
|
||||
presets[name] = getConfig(name, pkg)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"private": true,
|
||||
"name": "@xen-orchestra/babel-config",
|
||||
"version": "0.0.0",
|
||||
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/packages/@xen-orchestra/babel-config",
|
||||
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/babel-config",
|
||||
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
|
||||
114
@xen-orchestra/cr-seed-cli/index.js
Executable file
@@ -0,0 +1,114 @@
|
||||
#!/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([
|
||||
srcXapi.setFieldEntries(srcSnapshot, 'other_config', metadata),
|
||||
tgtXapi.setField(
|
||||
tgtVm,
|
||||
'name_label',
|
||||
`${srcVm.name_label} (${srcSnapshot.snapshot_time})`
|
||||
),
|
||||
tgtXapi.setFieldEntries(tgtVm, 'other_config', metadata),
|
||||
tgtXapi.setFieldEntries(tgtVm, 'other_config', {
|
||||
'xo:backup:sr': tgtSr.uuid,
|
||||
'xo:copy_of': srcSnapshotUuid,
|
||||
}),
|
||||
tgtXapi.setFieldEntries(tgtVm, '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 tgtXapi.setFieldEntry(
|
||||
tgtDisk,
|
||||
'other_config',
|
||||
'xo:copy_of',
|
||||
srcDisk.uuid
|
||||
)
|
||||
})
|
||||
),
|
||||
])
|
||||
})(process.argv.slice(2)).catch(console.error.bind(console, 'Fatal error:'))
|
||||
20
@xen-orchestra/cr-seed-cli/package.json
Normal file
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"name": "@xen-orchestra/cr-seed-cli",
|
||||
"version": "0.1.0",
|
||||
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/cr-seed-cli",
|
||||
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
|
||||
"repository": {
|
||||
"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.18.0"
|
||||
}
|
||||
}
|
||||
@@ -14,7 +14,7 @@
|
||||
"scheduling",
|
||||
"task"
|
||||
],
|
||||
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/packages/@xen-orchestra/cron",
|
||||
"homepage": "https://github.com/vatesfr/xen-orchestra/tree/master/@xen-orchestra/cron",
|
||||
"bugs": "https://github.com/vatesfr/xen-orchestra/issues",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -41,10 +41,10 @@
|
||||
"moment-timezone": "^0.5.14"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "7.0.0-beta.44",
|
||||
"@babel/core": "7.0.0-beta.44",
|
||||
"@babel/preset-env": "7.0.0-beta.44",
|
||||
"@babel/preset-flow": "7.0.0-beta.44",
|
||||
"@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"
|
||||
},
|
||||
|
||||
@@ -44,7 +44,9 @@ class Schedule {
|
||||
this._createDate =
|
||||
zone.toLowerCase() === 'utc'
|
||||
? moment.utc
|
||||
: zone === 'local' ? moment : () => moment.tz(zone)
|
||||
: zone === 'local'
|
||||
? moment
|
||||
: () => moment.tz(zone)
|
||||
}
|
||||
|
||||
createJob (fn) {
|
||||
|
||||
3
@xen-orchestra/fs/.babelrc.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = require('../../@xen-orchestra/babel-config')(
|
||||
require('./package.json')
|
||||
)
|
||||
52
@xen-orchestra/fs/package.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"name": "@xen-orchestra/fs",
|
||||
"version": "0.3.0",
|
||||
"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": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/vatesfr/xen-orchestra.git"
|
||||
},
|
||||
"preferGlobal": true,
|
||||
"main": "dist/",
|
||||
"bin": {},
|
||||
"files": [
|
||||
"dist/"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
},
|
||||
"dependencies": {
|
||||
"@marsaud/smb2": "^0.9.0",
|
||||
"execa": "^1.0.0",
|
||||
"fs-extra": "^7.0.0",
|
||||
"get-stream": "^4.0.0",
|
||||
"lodash": "^4.17.4",
|
||||
"promise-toolbox": "^0.10.1",
|
||||
"through2": "^2.0.3",
|
||||
"tmp": "^0.0.33",
|
||||
"xo-remote-parser": "^0.5.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/cli": "7.0.0",
|
||||
"@babel/core": "7.0.0",
|
||||
"@babel/plugin-proposal-function-bind": "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",
|
||||
"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 clean",
|
||||
"prepare": "yarn run build"
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,11 @@
|
||||
// @flow
|
||||
|
||||
import getStream from 'get-stream'
|
||||
import { randomBytes } from 'crypto'
|
||||
import { fromCallback, fromEvent, ignoreErrors } from 'promise-toolbox'
|
||||
import { type Readable, type Writable } from 'stream'
|
||||
import { fromEvent, ignoreErrors } from 'promise-toolbox'
|
||||
import { parse } from 'xo-remote-parser'
|
||||
|
||||
import { getPseudoRandomBytes, streamToBuffer } from '../utils'
|
||||
|
||||
import { createChecksumStream, validChecksumOfReadStream } from './checksum'
|
||||
|
||||
type Data = Buffer | Readable | string
|
||||
@@ -54,7 +54,7 @@ export default class RemoteHandlerAbstract {
|
||||
|
||||
async test (): Promise<Object> {
|
||||
const testFileName = `${Date.now()}.test`
|
||||
const data = getPseudoRandomBytes(1024 * 1024)
|
||||
const data = await fromCallback(cb => randomBytes(1024 * 1024, cb))
|
||||
let step = 'write'
|
||||
try {
|
||||
await this.outputFile(testFileName, data)
|
||||
@@ -92,12 +92,28 @@ export default class RemoteHandlerAbstract {
|
||||
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(streamToBuffer)
|
||||
return this.createReadStream(file, options).then(getStream.buffer)
|
||||
}
|
||||
|
||||
async rename (
|
||||
@@ -126,7 +142,10 @@ export default class RemoteHandlerAbstract {
|
||||
prependDir = false,
|
||||
}: { filter?: (name: string) => boolean, prependDir?: boolean } = {}
|
||||
): Promise<string[]> {
|
||||
const entries = await this._list(dir)
|
||||
let entries = await this._list(dir)
|
||||
if (filter !== undefined) {
|
||||
entries = entries.filter(filter)
|
||||
}
|
||||
|
||||
if (prependDir) {
|
||||
entries.forEach((entry, i) => {
|
||||
@@ -134,7 +153,7 @@ export default class RemoteHandlerAbstract {
|
||||
})
|
||||
}
|
||||
|
||||
return filter === undefined ? entries : entries.filter(filter)
|
||||
return entries
|
||||
}
|
||||
|
||||
async _list (dir: string): Promise<string[]> {
|
||||
@@ -85,8 +85,8 @@ export const validChecksumOfReadStream = (
|
||||
callback(
|
||||
checksum !== expectedChecksum
|
||||
? new Error(
|
||||
`Bad checksum (${checksum}), expected: ${expectedChecksum}`
|
||||
)
|
||||
`Bad checksum (${checksum}), expected: ${expectedChecksum}`
|
||||
)
|
||||
: null
|
||||
)
|
||||
}
|
||||
26
@xen-orchestra/fs/src/fs.integ.spec.js
Normal file
@@ -0,0 +1,26 @@
|
||||
/* eslint-env jest */
|
||||
|
||||
import rimraf from 'rimraf'
|
||||
import tmp from 'tmp'
|
||||
import { 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()
|
||||
})
|
||||
@@ -5,6 +5,7 @@ import RemoteHandlerLocal from './local'
|
||||
import RemoteHandlerNfs from './nfs'
|
||||
import RemoteHandlerSmb from './smb'
|
||||
|
||||
export type { default as RemoteHandler } from './abstract'
|
||||
export type Remote = { url: string }
|
||||
|
||||
const HANDLERS = {
|
||||
@@ -28,14 +28,9 @@ export default class LocalHandler extends RemoteHandlerAbstract {
|
||||
|
||||
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
|
||||
}
|
||||
const path = this._getRealPath()
|
||||
await fs.ensureDir(path)
|
||||
await fs.access(path, fs.R_OK | fs.W_OK)
|
||||
}
|
||||
return this._remote
|
||||
}
|
||||
@@ -50,6 +45,24 @@ export default class LocalHandler extends RemoteHandlerAbstract {
|
||||
await fs.writeFile(path, data, options)
|
||||
}
|
||||
|
||||
async _read (file, buffer, position) {
|
||||
const needsClose = typeof file === 'string'
|
||||
file = needsClose ? await fs.open(this._getFilePath(file), 'r') : file.fd
|
||||
try {
|
||||
return await fs.read(
|
||||
file,
|
||||
buffer,
|
||||
0,
|
||||
buffer.length,
|
||||
position === undefined ? null : position
|
||||
)
|
||||
} finally {
|
||||
if (needsClose) {
|
||||
await fs.close(file)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async _readFile (file, options) {
|
||||
return fs.readFile(this._getFilePath(file), options)
|
||||
}
|
||||
@@ -63,15 +76,13 @@ export default class LocalHandler extends RemoteHandlerAbstract {
|
||||
}
|
||||
|
||||
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,
|
||||
})
|
||||
}
|
||||
return typeof file === 'string'
|
||||
? fs.createReadStream(this._getFilePath(file), options)
|
||||
: fs.createReadStream('', {
|
||||
autoClose: false,
|
||||
...options,
|
||||
fd: file.fd,
|
||||
})
|
||||
}
|
||||
|
||||
async _createOutputStream (file, options) {
|
||||
@@ -79,13 +90,12 @@ export default class LocalHandler extends RemoteHandlerAbstract {
|
||||
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,
|
||||
})
|
||||
}
|
||||
return fs.createWriteStream('', {
|
||||
autoClose: false,
|
||||
...options,
|
||||
fd: file.fd,
|
||||
})
|
||||
}
|
||||
|
||||
async _unlink (file) {
|
||||
@@ -4,6 +4,8 @@ import { forEach } from 'lodash'
|
||||
|
||||
import LocalHandler from './local'
|
||||
|
||||
const DEFAULT_NFS_OPTIONS = 'vers=3'
|
||||
|
||||
export default class NfsHandler extends LocalHandler {
|
||||
get type () {
|
||||
return 'nfs'
|
||||
@@ -52,12 +54,13 @@ export default class NfsHandler extends LocalHandler {
|
||||
|
||||
async _mount () {
|
||||
await fs.ensureDir(this._getRealPath())
|
||||
const { host, path, port, options } = this._remote
|
||||
return execa('mount', [
|
||||
'-t',
|
||||
'nfs',
|
||||
'-o',
|
||||
'vers=3',
|
||||
`${this._remote.host}:${this._remote.path}`,
|
||||
DEFAULT_NFS_OPTIONS + (options !== undefined ? `,${options}` : ''),
|
||||
`${host}${port !== undefined ? ':' + port : ''}:${path}`,
|
||||
this._getRealPath(),
|
||||
])
|
||||
}
|
||||
@@ -65,19 +68,9 @@ export default class NfsHandler extends LocalHandler {
|
||||
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
|
||||
}
|
||||
await this._umount(this._remote)
|
||||
} else if (!this._matchesRealMount() && this._remote.enabled) {
|
||||
try {
|
||||
await this._mount()
|
||||
} catch (exc) {
|
||||
this._remote.enabled = false
|
||||
this._remote.error = exc.message
|
||||
}
|
||||
await this._mount()
|
||||
}
|
||||
return this._remote
|
||||
}
|
||||
@@ -1,7 +1,9 @@
|
||||
import Smb2 from '@marsaud/smb2-promise'
|
||||
import Smb2 from '@marsaud/smb2'
|
||||
import { pFinally } from 'promise-toolbox'
|
||||
|
||||
import RemoteHandlerAbstract from './abstract'
|
||||
import { noop, pFinally } from '../utils'
|
||||
|
||||
const noop = () => {}
|
||||
|
||||
// Normalize the error code for file not found.
|
||||
const normalizeError = error => {
|
||||
@@ -10,13 +12,13 @@ const normalizeError = 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,
|
||||
},
|
||||
})
|
||||
code: {
|
||||
configurable: true,
|
||||
readable: true,
|
||||
value: 'ENOENT',
|
||||
writable: true,
|
||||
},
|
||||
})
|
||||
: error
|
||||
}
|
||||
|
||||
@@ -30,7 +32,9 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
return 'smb'
|
||||
}
|
||||
|
||||
_getClient (remote) {
|
||||
_getClient () {
|
||||
const remote = this._remote
|
||||
|
||||
return new Smb2({
|
||||
share: `\\\\${remote.host}`,
|
||||
domain: remote.domain,
|
||||
@@ -67,19 +71,14 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
|
||||
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
|
||||
}
|
||||
// Check access (smb2 does not expose connect in public so far...)
|
||||
await this.list()
|
||||
}
|
||||
return this._remote
|
||||
}
|
||||
|
||||
async _outputFile (file, data, options = {}) {
|
||||
const client = this._getClient(this._remote)
|
||||
const client = this._getClient()
|
||||
const path = this._getFilePath(file)
|
||||
const dir = this._dirname(path)
|
||||
|
||||
@@ -88,19 +87,40 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
}
|
||||
|
||||
return client.writeFile(path, data, options)::pFinally(() => {
|
||||
client.close()
|
||||
client.disconnect()
|
||||
})
|
||||
}
|
||||
|
||||
async _read (file, buffer, position) {
|
||||
const needsClose = typeof file === 'string'
|
||||
|
||||
let client
|
||||
if (needsClose) {
|
||||
client = this._getClient()
|
||||
file = await client.open(this._getFilePath(file))
|
||||
} else {
|
||||
;({ client, file } = file.fd)
|
||||
}
|
||||
|
||||
try {
|
||||
return await client.read(file, buffer, 0, buffer.length, position)
|
||||
} finally {
|
||||
if (needsClose) {
|
||||
await client.close(file)
|
||||
client.disconnect()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async _readFile (file, options = {}) {
|
||||
const client = this._getClient(this._remote)
|
||||
const client = this._getClient()
|
||||
let content
|
||||
|
||||
try {
|
||||
content = await client
|
||||
.readFile(this._getFilePath(file), options)
|
||||
::pFinally(() => {
|
||||
client.close()
|
||||
client.disconnect()
|
||||
})
|
||||
} catch (error) {
|
||||
throw normalizeError(error)
|
||||
@@ -110,13 +130,15 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
}
|
||||
|
||||
async _rename (oldPath, newPath) {
|
||||
const client = this._getClient(this._remote)
|
||||
const client = this._getClient()
|
||||
|
||||
try {
|
||||
await client
|
||||
.rename(this._getFilePath(oldPath), this._getFilePath(newPath))
|
||||
.rename(this._getFilePath(oldPath), this._getFilePath(newPath), {
|
||||
replace: true,
|
||||
})
|
||||
::pFinally(() => {
|
||||
client.close()
|
||||
client.disconnect()
|
||||
})
|
||||
} catch (error) {
|
||||
throw normalizeError(error)
|
||||
@@ -124,12 +146,12 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
}
|
||||
|
||||
async _list (dir = '.') {
|
||||
const client = this._getClient(this._remote)
|
||||
const client = this._getClient()
|
||||
let list
|
||||
|
||||
try {
|
||||
list = await client.readdir(this._getFilePath(dir))::pFinally(() => {
|
||||
client.close()
|
||||
client.disconnect()
|
||||
})
|
||||
} catch (error) {
|
||||
throw normalizeError(error)
|
||||
@@ -142,13 +164,13 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
if (typeof file !== 'string') {
|
||||
file = file.path
|
||||
}
|
||||
const client = this._getClient(this._remote)
|
||||
const client = this._getClient()
|
||||
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())
|
||||
stream.on('end', () => client.disconnect())
|
||||
} catch (error) {
|
||||
throw normalizeError(error)
|
||||
}
|
||||
@@ -160,7 +182,7 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
if (typeof file !== 'string') {
|
||||
file = file.path
|
||||
}
|
||||
const client = this._getClient(this._remote)
|
||||
const client = this._getClient()
|
||||
const path = this._getFilePath(file)
|
||||
const dir = this._dirname(path)
|
||||
let stream
|
||||
@@ -170,19 +192,19 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
}
|
||||
stream = await client.createWriteStream(path, options) // FIXME ensure that options are properly handled by @marsaud/smb2
|
||||
} catch (err) {
|
||||
client.close()
|
||||
client.disconnect()
|
||||
throw err
|
||||
}
|
||||
stream.on('finish', () => client.close())
|
||||
stream.on('finish', () => client.disconnect())
|
||||
return stream
|
||||
}
|
||||
|
||||
async _unlink (file) {
|
||||
const client = this._getClient(this._remote)
|
||||
const client = this._getClient()
|
||||
|
||||
try {
|
||||
await client.unlink(this._getFilePath(file))::pFinally(() => {
|
||||
client.close()
|
||||
client.disconnect()
|
||||
})
|
||||
} catch (error) {
|
||||
throw normalizeError(error)
|
||||
@@ -190,14 +212,14 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
}
|
||||
|
||||
async _getSize (file) {
|
||||
const client = await this._getClient(this._remote)
|
||||
const client = await this._getClient()
|
||||
let size
|
||||
|
||||
try {
|
||||
size = await client
|
||||
.getSize(this._getFilePath(typeof file === 'string' ? file : file.path))
|
||||
::pFinally(() => {
|
||||
client.close()
|
||||
client.disconnect()
|
||||
})
|
||||
} catch (error) {
|
||||
throw normalizeError(error)
|
||||
@@ -206,10 +228,17 @@ export default class SmbHandler extends RemoteHandlerAbstract {
|
||||
return size
|
||||
}
|
||||
|
||||
// this is a fake
|
||||
// TODO: add flags
|
||||
async _openFile (path) {
|
||||
return this._getFilePath(path)
|
||||
const client = this._getClient()
|
||||
return {
|
||||
client,
|
||||
file: await client.open(this._getFilePath(path)),
|
||||
}
|
||||
}
|
||||
|
||||
async _closeFile (fd) {}
|
||||
async _closeFile ({ client, file }) {
|
||||
await client.close(file)
|
||||
client.disconnect()
|
||||
}
|
||||
}
|
||||
327
CHANGELOG.md
@@ -1,9 +1,329 @@
|
||||
# ChangeLog
|
||||
|
||||
## *next*
|
||||
|
||||
### 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))
|
||||
|
||||
### 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))
|
||||
|
||||
### Released packages
|
||||
|
||||
- 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
|
||||
|
||||
- Hide legacy backup creation view [#2956](https://github.com/vatesfr/xen-orchestra/issues/2956)
|
||||
- [Delta Backup NG logs] Display wether the export is a full or a delta [#2711](https://github.com/vatesfr/xen-orchestra/issues/2711)
|
||||
- Copy VDIs' UUID from SR/disks view [#3051](https://github.com/vatesfr/xen-orchestra/issues/3051)
|
||||
- [Backup NG] New option to shutdown VMs before snapshotting them [#3058](https://github.com/vatesfr/xen-orchestra/issues/3058#event-1673756438)
|
||||
- [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))
|
||||
|
||||
### 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)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Add VDI UUID in SR coalesce view [#2903](https://github.com/vatesfr/xen-orchestra/issues/2903)
|
||||
- Create new VDI from SR view not attached to any VM [#2229](https://github.com/vatesfr/xen-orchestra/issues/2229)
|
||||
- [Patches] ignore XS upgrade in missing patches counter [#2866](https://github.com/vatesfr/xen-orchestra/issues/2866)
|
||||
- [Health] List VM snapshots related to non-existing backup jobs/schedules [#2828](https://github.com/vatesfr/xen-orchestra/issues/2828)
|
||||
|
||||
## **5.19.0** (2018-05-01)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Expose vendor device in VM advanced tab [#2883](https://github.com/vatesfr/xen-orchestra/issues/2883)
|
||||
- Networks created in XO are missing the "automatic" parameter [#2818](https://github.com/vatesfr/xen-orchestra/issues/2818)
|
||||
- Performance alert disk space monitoring XS [#2737](https://github.com/vatesfr/xen-orchestra/issues/2737)
|
||||
- Add ability to create NFSv4 storage repository [#2706](https://github.com/vatesfr/xen-orchestra/issues/2706)
|
||||
- [SortedTable] Support link actions [#2691](https://github.com/vatesfr/xen-orchestra/issues/2691)
|
||||
- Additional sort option: by host name [#2680](https://github.com/vatesfr/xen-orchestra/issues/2680)
|
||||
- Expose XenTools version numbers in data model and UI [#2650](https://github.com/vatesfr/xen-orchestra/issues/2650)
|
||||
- RRDs stats for SR object [#2644](https://github.com/vatesfr/xen-orchestra/issues/2644)
|
||||
- composite jobs [#2367](https://github.com/vatesfr/xen-orchestra/issues/2367)
|
||||
- Better error message [#2344](https://github.com/vatesfr/xen-orchestra/issues/2344)
|
||||
- Avoid using backup tag with special characters [#2336](https://github.com/vatesfr/xen-orchestra/issues/2336)
|
||||
- Prefix/suffix for temporary files [#2333](https://github.com/vatesfr/xen-orchestra/issues/2333)
|
||||
- Continuous Replication - better interface matching on destination [#2093](https://github.com/vatesfr/xen-orchestra/issues/2093)
|
||||
- Creation of LVMoHBA SRs [#1992](https://github.com/vatesfr/xen-orchestra/issues/1992)
|
||||
- [Delta backup] Improve restoration by creating a virtual full VHD [#1943](https://github.com/vatesfr/xen-orchestra/issues/1943)
|
||||
- VM Backups should be done in a dedicated remote directory [#1752](https://github.com/vatesfr/xen-orchestra/issues/1752)
|
||||
- Add Pool / SR filter in backup view [#1762](https://github.com/vatesfr/xen-orchestra/issues/1762)
|
||||
- Hide/Disable upgrade button when no upgrade exists [#1594](https://github.com/vatesfr/xen-orchestra/issues/1594)
|
||||
- "Upgrade" button should display "Downgrade" when trial is over [#1483](https://github.com/vatesfr/xen-orchestra/issues/1483)
|
||||
|
||||
### Bugs
|
||||
|
||||
- Allowed-ips don't works displaying index.js:1 Uncaught TypeError: (0 , z.isIp) is not a function [#2891](https://github.com/vatesfr/xen-orchestra/issues/2891)
|
||||
- Error on "usage-report" [#2876](https://github.com/vatesfr/xen-orchestra/issues/2876)
|
||||
- SR selection combo only listing local storage [#2875](https://github.com/vatesfr/xen-orchestra/issues/2875)
|
||||
- [Backup NG - Delta] Issue while importing delta [#2857](https://github.com/vatesfr/xen-orchestra/issues/2857)
|
||||
- Create New SR page broken with past commit [#2853](https://github.com/vatesfr/xen-orchestra/issues/2853)
|
||||
- [Backup NG] a target should only be preset once [#2848](https://github.com/vatesfr/xen-orchestra/issues/2848)
|
||||
- Auth Method iSCSI [#2835](https://github.com/vatesfr/xen-orchestra/issues/2835)
|
||||
- [Backup NG] ENOENT with Delta Backup [#2833](https://github.com/vatesfr/xen-orchestra/issues/2833)
|
||||
- Different backup logs [#2732](https://github.com/vatesfr/xen-orchestra/issues/2732)
|
||||
- Creating network fails silently when omitting Description [#2719](https://github.com/vatesfr/xen-orchestra/issues/2719)
|
||||
- Can't create ISO NFS SR via XOA [#1845](https://github.com/vatesfr/xen-orchestra/issues/1845)
|
||||
|
||||
## **5.18.0** (2018-03-31)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Support huge VHDs [#2785](https://github.com/vatesfr/xen-orchestra/issues/2785)
|
||||
- Usage report extended usage [#2770](https://github.com/vatesfr/xen-orchestra/issues/2770)
|
||||
- Improve host available RAM display [#2750](https://github.com/vatesfr/xen-orchestra/issues/2750)
|
||||
- Hide IP field during VM creation if not configured [#2739](https://github.com/vatesfr/xen-orchestra/issues/2739)
|
||||
- [Home] Delete VMs modal should autofocus the input field [#2736](https://github.com/vatesfr/xen-orchestra/issues/2736)
|
||||
- Backup restore view load icon [#2692](https://github.com/vatesfr/xen-orchestra/issues/2692)
|
||||
- Deleting default templates doesn't work [#2666](https://github.com/vatesfr/xen-orchestra/issues/2666)
|
||||
- DR clean previous "failed" snapshots [#2656](https://github.com/vatesfr/xen-orchestra/issues/2656)
|
||||
- [Home] Put sort criteria in URL like the filter [#2585](https://github.com/vatesfr/xen-orchestra/issues/2585)
|
||||
- Allow disconnect VDI in SR disk view [#2505](https://github.com/vatesfr/xen-orchestra/issues/2505)
|
||||
- Add confirmation modal for manual backup run [#2355](https://github.com/vatesfr/xen-orchestra/issues/2355)
|
||||
- Multiple schedule for backup jobs [#2286](https://github.com/vatesfr/xen-orchestra/issues/2286)
|
||||
- Checks before web update [#2250](https://github.com/vatesfr/xen-orchestra/issues/2250)
|
||||
- Backup logs should truly reflect if the job is running [#2206](https://github.com/vatesfr/xen-orchestra/issues/2206)
|
||||
- Hook/action if an export stream is cut [#1929](https://github.com/vatesfr/xen-orchestra/issues/1929)
|
||||
- Backup paths should not contain tags but job ids [#1854](https://github.com/vatesfr/xen-orchestra/issues/1854)
|
||||
- Add a button to delete a backup [#1751](https://github.com/vatesfr/xen-orchestra/issues/1751)
|
||||
- Dashboard available for Pool and Host level [#1631](https://github.com/vatesfr/xen-orchestra/issues/1631)
|
||||
- UI Enhancement - VM list - Allways show the Toolbar [#1581](https://github.com/vatesfr/xen-orchestra/issues/1581)
|
||||
- xoa-updater --register: unable to define proxy using the CLI [#873](https://github.com/vatesfr/xen-orchestra/issues/873)
|
||||
|
||||
|
||||
### Bugs
|
||||
|
||||
- [Backup NG] CR/DR fail with multiple VMs [#2807](https://github.com/vatesfr/xen-orchestra/issues/2807)
|
||||
- HTTPS Crash [#2803](https://github.com/vatesfr/xen-orchestra/issues/2803)
|
||||
- Backup NG "cannot fork the stream after it has been created" [#2790](https://github.com/vatesfr/xen-orchestra/issues/2790)
|
||||
- [XOSAN] Make temporary `boundObjectId` unique [#2758](https://github.com/vatesfr/xen-orchestra/issues/2758)
|
||||
- First VIF ignored at VM creation [#2794](https://github.com/vatesfr/xen-orchestra/issues/2794)
|
||||
- VM creation from snapshot does not work [#2748](https://github.com/vatesfr/xen-orchestra/issues/2748)
|
||||
- Error: no such object with CentOS 7 template [#2747](https://github.com/vatesfr/xen-orchestra/issues/2747)
|
||||
- [Tasks] Filter does not work [#2740](https://github.com/vatesfr/xen-orchestra/issues/2740)
|
||||
- Pagination broken when listing pool VMs [#2730](https://github.com/vatesfr/xen-orchestra/issues/2730)
|
||||
- All jobs show error icon with message "This backup's creator no longer exists" [#2728](https://github.com/vatesfr/xen-orchestra/issues/2728)
|
||||
- [Basic backup] Continous Replication VM names [#2727](https://github.com/vatesfr/xen-orchestra/issues/2727)
|
||||
- Continuous replication clone removed [#2724](https://github.com/vatesfr/xen-orchestra/issues/2724)
|
||||
- [Backup] "See matching VMs" issue [#2704](https://github.com/vatesfr/xen-orchestra/issues/2704)
|
||||
- How to exclude CR targets from a smart backup using tags? [#2613](https://github.com/vatesfr/xen-orchestra/issues/2613)
|
||||
- Successful VM import reported as failed [#2056](https://github.com/vatesfr/xen-orchestra/issues/2056)
|
||||
- Delta backup: issue if a disk is once again backed up [#1824](https://github.com/vatesfr/xen-orchestra/issues/1824)
|
||||
|
||||
## **5.17.0** (2018-03-02)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Username field labeled inconsistently [#2651](https://github.com/vatesfr/xen-orchestra/issues/2651)
|
||||
- Add modal confirmation for host emergency mode [#2230](https://github.com/vatesfr/xen-orchestra/issues/2230)
|
||||
- Authorize stats fetching in RO mode [#2678](https://github.com/vatesfr/xen-orchestra/issues/2678)
|
||||
- Limit VM.export concurrency [#2669](https://github.com/vatesfr/xen-orchestra/issues/2669)
|
||||
@@ -22,6 +342,9 @@
|
||||
- Cant attach XenTools on User side. [#2503](https://github.com/vatesfr/xen-orchestra/issues/2503)
|
||||
- Pool filter for health view [#2302](https://github.com/vatesfr/xen-orchestra/issues/2302)
|
||||
- [Smart Backup] Improve feedback [#2253](https://github.com/vatesfr/xen-orchestra/issues/2253)
|
||||
- Backup jobs stuck if no space left on NFS remote [#2116](https://github.com/vatesfr/xen-orchestra/issues/2116)
|
||||
- Link between backup and XS tasks [#1193](https://github.com/vatesfr/xen-orchestra/issues/1193)
|
||||
- Move delta backup grouping to server side [#1008](https://github.com/vatesfr/xen-orchestra/issues/1008)
|
||||
|
||||
### Bugs
|
||||
|
||||
@@ -41,6 +364,7 @@
|
||||
- Self-service: allow VIF create [#2593](https://github.com/vatesfr/xen-orchestra/issues/2593)
|
||||
- Ghost tasks [#2579](https://github.com/vatesfr/xen-orchestra/issues/2579)
|
||||
- Autopatching: ignore 7.3 update patch for 7.2 [#2564](https://github.com/vatesfr/xen-orchestra/issues/2564)
|
||||
- Better Handling of suspending VMs from the Home screen [#2547](https://github.com/vatesfr/xen-orchestra/issues/2547)
|
||||
- Allow deleting VMs for which `destroy` is blocked [#2525](https://github.com/vatesfr/xen-orchestra/issues/2525)
|
||||
- Better confirmation on mass destructive actions [#2522](https://github.com/vatesfr/xen-orchestra/issues/2522)
|
||||
- Move VM In to/Out of Self Service Group [#1913](https://github.com/vatesfr/xen-orchestra/issues/1913)
|
||||
@@ -50,6 +374,8 @@
|
||||
- Remove CoffeeScript in xo-server [#189](https://github.com/vatesfr/xen-orchestra/issues/189)
|
||||
- Better Handling of suspending VMs from the Home screen [#2547](https://github.com/vatesfr/xen-orchestra/issues/2547)
|
||||
- [xen-api] Stronger reconnection policy [#2410](https://github.com/vatesfr/xen-orchestra/issues/2410)
|
||||
- home view - allow selecting more than 25 items [#1210](https://github.com/vatesfr/xen-orchestra/issues/1210)
|
||||
- Performances alerts [#511](https://github.com/vatesfr/xen-orchestra/issues/511)
|
||||
|
||||
### Bugs
|
||||
|
||||
@@ -79,6 +405,7 @@
|
||||
- Graphs in VM list view [#2469](https://github.com/vatesfr/xen-orchestra/issues/2469)
|
||||
- [Delta Backups] Do not include merge duration in transfer speed stat [#2426](https://github.com/vatesfr/xen-orchestra/issues/2426)
|
||||
- Warning for disperse mode [#2537](https://github.com/vatesfr/xen-orchestra/issues/2537)
|
||||
- Select components: auto select value if only 1 choice possible [#1479](https://github.com/vatesfr/xen-orchestra/issues/1479)
|
||||
|
||||
### Bugs
|
||||
|
||||
|
||||
17
PULL_REQUEST_TEMPLATE.md
Normal file
@@ -0,0 +1,17 @@
|
||||
### Check list
|
||||
|
||||
> Check items when done or if not relevant
|
||||
|
||||
- [ ] PR reference the relevant issue (e.g. `Fixes #007`)
|
||||
- [ ] if UI changes, a screenshot has been added to the PR
|
||||
- [ ] CHANGELOG:
|
||||
- enhancement/bug fix entry added
|
||||
- list of packages to release updated (`${name} v${new version}`)
|
||||
- [ ] 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 re- add a reviewer
|
||||
5
babel.config.js
Normal file
@@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
// Necessary for jest to be able to find the `.babelrc.js` closest to the file
|
||||
// instead of only the one in this directory.
|
||||
babelrcRoots: true,
|
||||
}
|
||||
9
book.json
Normal file
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"gitbook": ">=3.0.0",
|
||||
"root": "./docs",
|
||||
"plugins": [
|
||||
"anchors",
|
||||
"-edit-link"
|
||||
],
|
||||
"pluginsConfig": {}
|
||||
}
|
||||
31
docs/README.md
Normal 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.
|
||||
|
||||

|
||||
|
||||
## 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)
|
||||
77
docs/SUMMARY.md
Normal file
@@ -0,0 +1,77 @@
|
||||
# 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)
|
||||
* [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)
|
||||
* [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
@@ -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"
|
||||
|
||||

|
||||
|
||||
> Pro tip: you can click to add multiple objects at the same time!
|
||||
|
||||
Your ACL is now available in the right list:
|
||||
|
||||

|
||||
|
||||
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
@@ -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)
|
||||
|
||||

|
||||
35
docs/alerts.md
Normal 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
@@ -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:
|
||||
|
||||

|
||||
|
||||
## Xen Orchestra (XO)
|
||||
|
||||

|
||||
|
||||
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
|
After Width: | Height: | Size: 4.4 KiB |
BIN
docs/assets/DocImg2.png
Normal file
|
After Width: | Height: | Size: 51 KiB |
BIN
docs/assets/DocImg3.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
docs/assets/DocImg4.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
docs/assets/DocImg5.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
docs/assets/DocImg6.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
docs/assets/DocImg7.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
docs/assets/DocImg8.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
docs/assets/DocImg9.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/assets/acllist.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
docs/assets/backup-report-config.png
Normal file
|
After Width: | Height: | Size: 41 KiB |
BIN
docs/assets/backup-reports-plugin.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
docs/assets/backupexample.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
docs/assets/bind-process.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/assets/cover.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/assets/cpu_weight.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
docs/assets/createacl.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
docs/assets/directpurchase.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
docs/assets/disperse3.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
docs/assets/disperse3_grow.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
docs/assets/disperse5.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
docs/assets/disperse6.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
docs/assets/disperse6_2nodesoff.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
docs/assets/export_task.png
Normal file
|
After Width: | Height: | Size: 6.5 KiB |
BIN
docs/assets/fullevent.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
docs/assets/githubconfig.png
Normal file
|
After Width: | Height: | Size: 9.4 KiB |
BIN
docs/assets/googleconfig.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/assets/groups.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
docs/assets/heatmap.png
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
docs/assets/invoices.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
docs/assets/job_create.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
docs/assets/job_execute.png
Normal file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
docs/assets/jobmanager.png
Normal file
|
After Width: | Height: | Size: 8.4 KiB |
BIN
docs/assets/ldapconfig.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
docs/assets/loadbalancer.jpg
Normal file
|
After Width: | Height: | Size: 124 KiB |
BIN
docs/assets/member_purchase.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
docs/assets/member_purchase2.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
docs/assets/member_purchase3.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/assets/member_purchase_2.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
docs/assets/noevent.jpg
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
docs/assets/parralelcoordinates.png
Normal file
|
After Width: | Height: | Size: 67 KiB |
BIN
docs/assets/partner2.jpg
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
docs/assets/partner_request.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
docs/assets/plugins.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
docs/assets/purchase-for-another.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
docs/assets/purchase-menu.jpg
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
docs/assets/purchaser_button.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
docs/assets/purchasing-process.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
docs/assets/quiesced1.png
Normal file
|
After Width: | Height: | Size: 31 KiB |
BIN
docs/assets/quiesced2.png
Normal file
|
After Width: | Height: | Size: 5.4 KiB |
BIN
docs/assets/quotation.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
docs/assets/react_js.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
docs/assets/refreshupdater.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
docs/assets/regproxy.png
Normal file
|
After Width: | Height: | Size: 8.0 KiB |
BIN
docs/assets/regupdate.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
docs/assets/replicate2.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
docs/assets/replicate2x2.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
docs/assets/replicate2x3_full.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
docs/assets/replicate3.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
docs/assets/replicate3x2.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
docs/assets/replicate3x2_full.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
BIN
docs/assets/samlconfig.png
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
docs/assets/schedule_job.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
docs/assets/schedule_recap.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/assets/selfservice_create_vm.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
BIN
docs/assets/selfservice_creation.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
docs/assets/selfservice_menu.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
docs/assets/selfservice_new_vm.png
Normal file
|
After Width: | Height: | Size: 6.2 KiB |
BIN
docs/assets/selfservice_recap.png
Normal file
|
After Width: | Height: | Size: 9.2 KiB |
BIN
docs/assets/selfservice_recap_quotas.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
docs/assets/selfservice_summary_quotas.png
Normal file
|
After Width: | Height: | Size: 6.8 KiB |