Merge ~simpoir/ubuntu/+source/landscape-client:beyond_19.04 into ubuntu/+source/landscape-client:ubuntu/devel
- Git
- lp:~simpoir/ubuntu/+source/landscape-client
- beyond_19.04
- Merge into ubuntu/devel
Status: | Merged | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Approved by: | Andreas Hasenack | ||||||||||||||||
Approved revision: | ba2b91dfd960345a2bcdae49cd034f6e579a2287 | ||||||||||||||||
Merged at revision: | ba2b91dfd960345a2bcdae49cd034f6e579a2287 | ||||||||||||||||
Proposed branch: | ~simpoir/ubuntu/+source/landscape-client:beyond_19.04 | ||||||||||||||||
Merge into: | ubuntu/+source/landscape-client:ubuntu/devel | ||||||||||||||||
Diff against target: |
377 lines (+326/-1) 6 files modified
debian/changelog (+12/-0) debian/landscape-client.init (+2/-1) debian/landscape-client.postinst (+3/-0) debian/patches/product-name-vminfo-1828217.patch (+49/-0) debian/patches/series (+2/-0) debian/patches/stagger-launch-1788518.patch (+258/-0) |
||||||||||||||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Andreas Hasenack | Approve | ||
Canonical Server | Pending | ||
git-ubuntu developers | Pending | ||
Review via email: mp+368945@code.launchpad.net |
Commit message
Description of the change
Simon Poirier (simpoir) : | # |
Andreas Hasenack (ahasenack) : | # |
Simon Poirier (simpoir) : | # |
Andreas Hasenack (ahasenack) : | # |
Andreas Hasenack (ahasenack) wrote : | # |
You are still patching a maintainer script (postinst)
Simon Poirier (simpoir) wrote : | # |
I've "unpatchified" that change.
Andreas Hasenack (ahasenack) wrote : | # |
LGTM, +1
Do you want immediate sponsoring of this?
Andreas Hasenack (ahasenack) wrote : | # |
Sponsoring ba2b91dfd960345
Andreas Hasenack (ahasenack) wrote : | # |
Tagged and uploaded:
$ git push pkg upload/
Enumerating objects: 32, done.
Counting objects: 100% (32/32), done.
Delta compression using up to 2 threads
Compressing objects: 100% (25/25), done.
Writing objects: 100% (25/25), 6.95 KiB | 711.00 KiB/s, done.
Total 25 (delta 17), reused 0 (delta 0)
To ssh://git.
* [new tag] upload/
$ dput ubuntu ../landscape-
Checking signature on .changes
gpg: ../landscape-
Checking signature on .dsc
gpg: ../landscape-
Uploading to ubuntu (via ftp to upload.ubuntu.com):
Uploading landscape-
Uploading landscape-
Uploading landscape-
Uploading landscape-
Successfully uploaded packages.
Preview Diff
1 | diff --git a/debian/changelog b/debian/changelog | |||
2 | index 181c79d..c8629f4 100644 | |||
3 | --- a/debian/changelog | |||
4 | +++ b/debian/changelog | |||
5 | @@ -1,3 +1,15 @@ | |||
6 | 1 | landscape-client (18.01-0ubuntu9) eoan; urgency=medium | ||
7 | 2 | |||
8 | 3 | * d/p/product-name-vminfo-1828217.patch: Add product_name to things scanned | ||
9 | 4 | for vm_info (LP: #1828217) | ||
10 | 5 | * d/landscape-client.postinst: Set default value if data_path is | ||
11 | 6 | missing. (LP: #1728681) | ||
12 | 7 | * d/p/stagger-launch-1788518.patch: Add option to stagger launch of broker | ||
13 | 8 | plugins. (LP: #1788518) | ||
14 | 9 | * d/landscape-client.init: Fix init script stop action (LP: #1833137) | ||
15 | 10 | |||
16 | 11 | -- Simon Poirier <simon.poirier@canonical.com> Fri, 14 Jun 2019 17:29:07 -0400 | ||
17 | 12 | |||
18 | 1 | landscape-client (18.01-0ubuntu8) eoan; urgency=medium | 13 | landscape-client (18.01-0ubuntu8) eoan; urgency=medium |
19 | 2 | 14 | ||
20 | 3 | * Set LANG in sysinfo wrapper. (LP: #1780071) | 15 | * Set LANG in sysinfo wrapper. (LP: #1780071) |
21 | diff --git a/debian/landscape-client.init b/debian/landscape-client.init | |||
22 | index fcaeafd..ed51cc2 100644 | |||
23 | --- a/debian/landscape-client.init | |||
24 | +++ b/debian/landscape-client.init | |||
25 | @@ -63,7 +63,8 @@ case "$1" in | |||
26 | 63 | 63 | ||
27 | 64 | stop) | 64 | stop) |
28 | 65 | log_daemon_msg "Stopping $NAME daemon" | 65 | log_daemon_msg "Stopping $NAME daemon" |
30 | 66 | start-stop-daemon --retry 30 --stop --quiet --pidfile $PIDFILE | 66 | # not a typo, linux process names are truncated to 15chars |
31 | 67 | start-stop-daemon --retry 30 --stop --quiet --pidfile $PIDFILE -n landscape-clien | ||
32 | 67 | log_end_msg $? | 68 | log_end_msg $? |
33 | 68 | ;; | 69 | ;; |
34 | 69 | 70 | ||
35 | diff --git a/debian/landscape-client.postinst b/debian/landscape-client.postinst | |||
36 | index d8d91ba..6e441ea 100644 | |||
37 | --- a/debian/landscape-client.postinst | |||
38 | +++ b/debian/landscape-client.postinst | |||
39 | @@ -102,6 +102,9 @@ END | |||
40 | 102 | # user information. The flag file will be removed by the client when | 102 | # user information. The flag file will be removed by the client when |
41 | 103 | # the update completes. | 103 | # the update completes. |
42 | 104 | DATA_PATH="`grep ^data_path /etc/landscape/client.conf | cut -d= -f2 | tr -d '[[:space:]]'`" | 104 | DATA_PATH="`grep ^data_path /etc/landscape/client.conf | cut -d= -f2 | tr -d '[[:space:]]'`" |
43 | 105 | if [ -z "$DATA_PATH" ]; then | ||
44 | 106 | DATA_PATH=/var/lib/landscape/client | ||
45 | 107 | fi | ||
46 | 105 | install --owner=landscape --directory $DATA_PATH | 108 | install --owner=landscape --directory $DATA_PATH |
47 | 106 | USER_UPDATE_FLAG_FILE="$DATA_PATH/user-update-flag" | 109 | USER_UPDATE_FLAG_FILE="$DATA_PATH/user-update-flag" |
48 | 107 | install --owner=landscape /dev/null $USER_UPDATE_FLAG_FILE | 110 | install --owner=landscape /dev/null $USER_UPDATE_FLAG_FILE |
49 | diff --git a/debian/patches/product-name-vminfo-1828217.patch b/debian/patches/product-name-vminfo-1828217.patch | |||
50 | 108 | new file mode 100644 | 111 | new file mode 100644 |
51 | index 0000000..4420e0c | |||
52 | --- /dev/null | |||
53 | +++ b/debian/patches/product-name-vminfo-1828217.patch | |||
54 | @@ -0,0 +1,49 @@ | |||
55 | 1 | Description: Add product_name to things scanned for vm_info | ||
56 | 2 | Author: Simon Poirier <simon.poirier@canonical.com> | ||
57 | 3 | Origin: upstream, https://github.com/CanonicalLtd/landscape-client/commit/ad28feeb7d3031268eeb206c4d8bdcd015ad79ae | ||
58 | 4 | Bug-Ubuntu: https://bugs.launchpad.net/bugs/1828217 | ||
59 | 5 | Last-Update: 2019-06-14 | ||
60 | 6 | |||
61 | 7 | --- a/landscape/lib/tests/test_vm_info.py | ||
62 | 8 | +++ b/landscape/lib/tests/test_vm_info.py | ||
63 | 9 | @@ -179,6 +179,11 @@ | ||
64 | 10 | self.make_dmi_info("sys_vendor", "Some other vendor") | ||
65 | 11 | self.assertEqual(b"", get_vm_info(root_path=self.root_path)) | ||
66 | 12 | |||
67 | 13 | + def test_get_vm_info_with_kvm_product(self): | ||
68 | 14 | + """get_vm_info returns 'kvm', if product_name is 'KVM'.""" | ||
69 | 15 | + self.make_dmi_info("product_name", "KVM") | ||
70 | 16 | + self.assertEqual(b"kvm", get_vm_info(root_path=self.root_path)) | ||
71 | 17 | + | ||
72 | 18 | |||
73 | 19 | class GetContainerInfoTest(BaseTestCase): | ||
74 | 20 | |||
75 | 21 | --- a/landscape/lib/vm_info.py | ||
76 | 22 | +++ b/landscape/lib/vm_info.py | ||
77 | 23 | @@ -6,6 +6,9 @@ | ||
78 | 24 | from landscape.lib.fs import read_text_file | ||
79 | 25 | |||
80 | 26 | |||
81 | 27 | +DMI_FILES = ("sys_vendor", "chassis_vendor", "bios_vendor", "product_name") | ||
82 | 28 | + | ||
83 | 29 | + | ||
84 | 30 | def get_vm_info(root_path="/"): | ||
85 | 31 | """ | ||
86 | 32 | Return a bytestring with the virtualization type if it's known, an empty | ||
87 | 33 | @@ -22,7 +25,7 @@ | ||
88 | 34 | # Iterate through all dmi *_vendors, as clouds can (and will) customize | ||
89 | 35 | # sysinfo values. (https://libvirt.org/formatdomain.html#elementsSysinfo) | ||
90 | 36 | dmi_info_path = os.path.join(root_path, "sys/class/dmi/id") | ||
91 | 37 | - for dmi_info_file in ("sys_vendor", "chassis_vendor", "bios_vendor"): | ||
92 | 38 | + for dmi_info_file in DMI_FILES: | ||
93 | 39 | dmi_vendor_path = os.path.join(dmi_info_path, dmi_info_file) | ||
94 | 40 | if not os.path.exists(dmi_vendor_path): | ||
95 | 41 | continue | ||
96 | 42 | @@ -76,6 +79,7 @@ | ||
97 | 43 | ("nutanix", b"kvm"), | ||
98 | 44 | ("openstack", b"kvm"), | ||
99 | 45 | ("qemu", b"kvm"), | ||
100 | 46 | + ("kvm", b"kvm"), | ||
101 | 47 | ("vmware", b"vmware")) | ||
102 | 48 | for name, vm_type in content_vendors_map: | ||
103 | 49 | if name in vendor: | ||
104 | diff --git a/debian/patches/series b/debian/patches/series | |||
105 | index 79d72dd..ebfbf13 100644 | |||
106 | --- a/debian/patches/series | |||
107 | +++ b/debian/patches/series | |||
108 | @@ -7,3 +7,5 @@ post-upgrade-reboot.patch | |||
109 | 7 | unicode-tags-script.patch | 7 | unicode-tags-script.patch |
110 | 8 | 1616116-resync-loop.patch | 8 | 1616116-resync-loop.patch |
111 | 9 | mem-usage-1685885.patch | 9 | mem-usage-1685885.patch |
112 | 10 | product-name-vminfo-1828217.patch | ||
113 | 11 | stagger-launch-1788518.patch | ||
114 | diff --git a/debian/patches/stagger-launch-1788518.patch b/debian/patches/stagger-launch-1788518.patch | |||
115 | 10 | new file mode 100644 | 12 | new file mode 100644 |
116 | index 0000000..d0f2908 | |||
117 | --- /dev/null | |||
118 | +++ b/debian/patches/stagger-launch-1788518.patch | |||
119 | @@ -0,0 +1,258 @@ | |||
120 | 1 | Description: Add option to stagger launch of broker plugins. | ||
121 | 2 | Author: Simon Poirier <simon.poirier@canonical.com> | ||
122 | 3 | Origin: upstream, https://github.com/CanonicalLtd/landscape-client/commit/597a584083f5245b8960e6c20d67e0fe25bdcdc2 | ||
123 | 4 | Bug-Ubuntu: https://bugs.launchpad.net/bugs/1788518 | ||
124 | 5 | Last-Update: 2019-06-14 | ||
125 | 6 | |||
126 | 7 | diff --git a/example.conf b/example.conf | ||
127 | 8 | index 47dac275..3965d29d 100644 | ||
128 | 9 | --- a/example.conf | ||
129 | 10 | +++ b/example.conf | ||
130 | 11 | @@ -50,6 +50,16 @@ ping_url = http://landscape.canonical.com/ping | ||
131 | 12 | # | ||
132 | 13 | #ssl_public_key | ||
133 | 14 | |||
134 | 15 | +# The ratio over which to spread landscape intervals. This is to mitigate | ||
135 | 16 | +# the impact of restarting the host of multiple landscape-client instances. | ||
136 | 17 | +# Values range from 0.0 to 1.0, from unstaggered to spreading over | ||
137 | 18 | +# the full interval. | ||
138 | 19 | +# | ||
139 | 20 | +# Default value is 0.1, meaning jobs will start with up to 10% delay | ||
140 | 21 | +# | ||
141 | 22 | +# Example: | ||
142 | 23 | +# stagger_launch = 0.5 | ||
143 | 24 | + | ||
144 | 25 | # If set to True interrupt (SIGINT) signals will be ignored by the | ||
145 | 26 | # landscape-client daemon. | ||
146 | 27 | ignore_sigint = False | ||
147 | 28 | diff --git a/landscape/client/broker/client.py b/landscape/client/broker/client.py | ||
148 | 29 | index 62287329..042c18a4 100644 | ||
149 | 30 | --- a/landscape/client/broker/client.py | ||
150 | 31 | +++ b/landscape/client/broker/client.py | ||
151 | 32 | @@ -1,5 +1,6 @@ | ||
152 | 33 | -from logging import info, exception, error | ||
153 | 34 | +from logging import info, exception, error, debug | ||
154 | 35 | import sys | ||
155 | 36 | +import random | ||
156 | 37 | |||
157 | 38 | from twisted.internet.defer import maybeDeferred, succeed | ||
158 | 39 | |||
159 | 40 | @@ -105,9 +106,18 @@ class BrokerClientPlugin(object): | ||
160 | 41 | if self.run_immediately: | ||
161 | 42 | self._run_with_error_log() | ||
162 | 43 | if self.run_interval is not None: | ||
163 | 44 | - self._loop = self.client.reactor.call_every( | ||
164 | 45 | - self.run_interval, | ||
165 | 46 | - self._run_with_error_log) | ||
166 | 47 | + delay = (random.random() * self.run_interval * | ||
167 | 48 | + self.client.config.stagger_launch) | ||
168 | 49 | + debug("delaying start of %s for %d seconds", | ||
169 | 50 | + format_object(self), delay) | ||
170 | 51 | + self._loop = self.client.reactor.call_later( | ||
171 | 52 | + delay, self._start_loop) | ||
172 | 53 | + | ||
173 | 54 | + def _start_loop(self): | ||
174 | 55 | + """Launch the client loop.""" | ||
175 | 56 | + self._loop = self.client.reactor.call_every( | ||
176 | 57 | + self.run_interval, | ||
177 | 58 | + self._run_with_error_log) | ||
178 | 59 | |||
179 | 60 | def _run_with_error_log(self): | ||
180 | 61 | """Wrap self.run in a Deferred with a logging error handler.""" | ||
181 | 62 | @@ -140,10 +150,11 @@ class BrokerClient(object): | ||
182 | 63 | """ | ||
183 | 64 | name = "client" | ||
184 | 65 | |||
185 | 66 | - def __init__(self, reactor): | ||
186 | 67 | + def __init__(self, reactor, config): | ||
187 | 68 | super(BrokerClient, self).__init__() | ||
188 | 69 | self.reactor = reactor | ||
189 | 70 | self.broker = None | ||
190 | 71 | + self.config = config | ||
191 | 72 | self._registered_messages = {} | ||
192 | 73 | self._plugins = [] | ||
193 | 74 | self._plugin_names = {} | ||
194 | 75 | diff --git a/landscape/client/broker/tests/helpers.py b/landscape/client/broker/tests/helpers.py | ||
195 | 76 | index 97c5e4f4..fc010209 100644 | ||
196 | 77 | --- a/landscape/client/broker/tests/helpers.py | ||
197 | 78 | +++ b/landscape/client/broker/tests/helpers.py | ||
198 | 79 | @@ -206,7 +206,9 @@ class BrokerClientHelper(RemoteBrokerHelper): | ||
199 | 80 | # The client needs its own reactor to avoid infinite loops | ||
200 | 81 | # when the broker broadcasts and event | ||
201 | 82 | test_case.client_reactor = FakeReactor() | ||
202 | 83 | - test_case.client = BrokerClient(test_case.client_reactor) | ||
203 | 84 | + config = BrokerConfiguration() | ||
204 | 85 | + config.stagger_launch = 0 # let's keep tests deterministic | ||
205 | 86 | + test_case.client = BrokerClient(test_case.client_reactor, config) | ||
206 | 87 | test_case.client.broker = test_case.remote | ||
207 | 88 | |||
208 | 89 | |||
209 | 90 | diff --git a/landscape/client/broker/tests/test_client.py b/landscape/client/broker/tests/test_client.py | ||
210 | 91 | index 967f77db..3295b02b 100644 | ||
211 | 92 | --- a/landscape/client/broker/tests/test_client.py | ||
212 | 93 | +++ b/landscape/client/broker/tests/test_client.py | ||
213 | 94 | @@ -178,6 +178,26 @@ class BrokerClientTest(LandscapeTest): | ||
214 | 95 | deferred.callback(123) | ||
215 | 96 | self.assertEquals(runs, [True, True]) | ||
216 | 97 | |||
217 | 98 | + @mock.patch("random.random") | ||
218 | 99 | + def test_run_interval_staggered(self, mock_random): | ||
219 | 100 | + """ | ||
220 | 101 | + If a plugin has a run method and staggered_launch is set, | ||
221 | 102 | + the launch gets delayed by a random factor. | ||
222 | 103 | + """ | ||
223 | 104 | + mock_random.return_value = 1.0 | ||
224 | 105 | + plugin = BrokerClientPlugin() | ||
225 | 106 | + plugin.run_interval = 60 | ||
226 | 107 | + plugin.run = mock.Mock() | ||
227 | 108 | + self.client.config.stagger_launch = 0.5 | ||
228 | 109 | + self.client.add(plugin) | ||
229 | 110 | + self.client_reactor.advance(30) | ||
230 | 111 | + self.assertEqual(0, plugin.run.call_count) | ||
231 | 112 | + self.client_reactor.advance(60) | ||
232 | 113 | + self.assertEqual(1, plugin.run.call_count) | ||
233 | 114 | + self.client_reactor.advance(60) | ||
234 | 115 | + self.assertEqual(2, plugin.run.call_count) | ||
235 | 116 | + self.assertEqual(1, mock_random.call_count) | ||
236 | 117 | + | ||
237 | 118 | def test_run_immediately(self): | ||
238 | 119 | """ | ||
239 | 120 | If a plugin has a C{run} method and C{run_immediately} is C{True}, | ||
240 | 121 | diff --git a/landscape/client/deployment.py b/landscape/client/deployment.py | ||
241 | 122 | index 8c2f905e..7c5464cb 100644 | ||
242 | 123 | --- a/landscape/client/deployment.py | ||
243 | 124 | +++ b/landscape/client/deployment.py | ||
244 | 125 | @@ -82,6 +82,7 @@ class Configuration(BaseConfiguration): | ||
245 | 126 | - C{ping_url} (C{"http://landscape.canonical.com/ping"}) | ||
246 | 127 | - C{ssl_public_key} | ||
247 | 128 | - C{ignore_sigint} (C{False}) | ||
248 | 129 | + - C{stagger_launch} (C{0.1}) | ||
249 | 130 | """ | ||
250 | 131 | parser = super(Configuration, self).make_parser() | ||
251 | 132 | logging.add_cli_options(parser, logdir="/var/log/landscape") | ||
252 | 133 | @@ -111,6 +112,10 @@ class Configuration(BaseConfiguration): | ||
253 | 134 | metavar="INTERVAL", | ||
254 | 135 | help="The number of seconds between flushes to disk " | ||
255 | 136 | "for persistent data.") | ||
256 | 137 | + parser.add_option("--stagger-launch", metavar="STAGGER_RATIO", | ||
257 | 138 | + dest="stagger_launch", default=0.1, type=float, | ||
258 | 139 | + help="Ratio, between 0 and 1, by which to scatter " | ||
259 | 140 | + "various tasks of landscape.") | ||
260 | 141 | |||
261 | 142 | # Hidden options, used for load-testing to run in-process clones | ||
262 | 143 | parser.add_option("--clones", default=0, type=int, help=SUPPRESS_HELP) | ||
263 | 144 | diff --git a/landscape/client/manager/manager.py b/landscape/client/manager/manager.py | ||
264 | 145 | index a662e13e..18d13148 100644 | ||
265 | 146 | --- a/landscape/client/manager/manager.py | ||
266 | 147 | +++ b/landscape/client/manager/manager.py | ||
267 | 148 | @@ -12,7 +12,7 @@ class Manager(BrokerClient): | ||
268 | 149 | name = "manager" | ||
269 | 150 | |||
270 | 151 | def __init__(self, reactor, config): | ||
271 | 152 | - super(Manager, self).__init__(reactor) | ||
272 | 153 | + super(Manager, self).__init__(reactor, config) | ||
273 | 154 | self.reactor = reactor | ||
274 | 155 | self.config = config | ||
275 | 156 | self.store = ManagerStore(self.config.store_filename) | ||
276 | 157 | diff --git a/landscape/client/monitor/monitor.py b/landscape/client/monitor/monitor.py | ||
277 | 158 | index 7ab82560..ebd3823d 100644 | ||
278 | 159 | --- a/landscape/client/monitor/monitor.py | ||
279 | 160 | +++ b/landscape/client/monitor/monitor.py | ||
280 | 161 | @@ -12,7 +12,7 @@ class Monitor(BrokerClient): | ||
281 | 162 | |||
282 | 163 | def __init__(self, reactor, config, persist, persist_filename=None, | ||
283 | 164 | step_size=5 * 60): | ||
284 | 165 | - super(Monitor, self).__init__(reactor) | ||
285 | 166 | + super(Monitor, self).__init__(reactor, config) | ||
286 | 167 | self.reactor = reactor | ||
287 | 168 | self.config = config | ||
288 | 169 | self.persist = persist | ||
289 | 170 | diff --git a/landscape/client/tests/helpers.py b/landscape/client/tests/helpers.py | ||
290 | 171 | index 73775f99..a15353fc 100644 | ||
291 | 172 | --- a/landscape/client/tests/helpers.py | ||
292 | 173 | +++ b/landscape/client/tests/helpers.py | ||
293 | 174 | @@ -175,6 +175,7 @@ class MonitorHelper(FakeBrokerServiceHelper): | ||
294 | 175 | persist_filename = test_case.makePersistFile() | ||
295 | 176 | test_case.config = MonitorConfiguration() | ||
296 | 177 | test_case.config.load(["-c", test_case.config_filename]) | ||
297 | 178 | + test_case.config.stagger_launch = 0 # let's keep tests deterministic | ||
298 | 179 | test_case.reactor = FakeReactor() | ||
299 | 180 | test_case.monitor = Monitor( | ||
300 | 181 | test_case.reactor, test_case.config, | ||
301 | 182 | diff --git a/landscape/client/tests/test_configuration.py b/landscape/client/tests/test_configuration.py | ||
302 | 183 | index 58381321..36d6d3ec 100644 | ||
303 | 184 | --- a/landscape/client/tests/test_configuration.py | ||
304 | 185 | +++ b/landscape/client/tests/test_configuration.py | ||
305 | 186 | @@ -753,6 +753,13 @@ class LandscapeSetupScriptTest(LandscapeTest): | ||
306 | 187 | self.assertEqual(self.config.access_group, u"webservers") | ||
307 | 188 | mock_input.assert_not_called() | ||
308 | 189 | |||
309 | 190 | + @mock.patch("landscape.client.configuration.input") | ||
310 | 191 | + def test_stagger_defined_on_command_line(self, mock_input): | ||
311 | 192 | + self.assertEqual(self.config.stagger_launch, 0.1) | ||
312 | 193 | + self.config.load_command_line(["--stagger-launch", "0.5"]) | ||
313 | 194 | + self.assertEqual(self.config.stagger_launch, 0.5) | ||
314 | 195 | + mock_input.assert_not_called() | ||
315 | 196 | + | ||
316 | 197 | @mock.patch("landscape.client.configuration.show_help") | ||
317 | 198 | def test_show_header(self, mock_show_help): | ||
318 | 199 | help_snippet = "This script will" | ||
319 | 200 | diff --git a/man/landscape-client.1 b/man/landscape-client.1 | ||
320 | 201 | index 3a16c4a9..adb4bdc1 100644 | ||
321 | 202 | --- a/man/landscape-client.1 | ||
322 | 203 | +++ b/man/landscape-client.1 | ||
323 | 204 | @@ -1,5 +1,5 @@ | ||
324 | 205 | .\" Text automatically generated by txt2man | ||
325 | 206 | -.TH landscape-client 1 "05 January 2017" "" "" | ||
326 | 207 | +.TH landscape-client 1 "14 February 2019" "" "" | ||
327 | 208 | .SH NAME | ||
328 | 209 | \fBlandscape-client \fP- Landscape system client | ||
329 | 210 | \fB | ||
330 | 211 | diff --git a/man/landscape-config.1 b/man/landscape-config.1 | ||
331 | 212 | index 6f362f2f..7d398fff 100644 | ||
332 | 213 | --- a/man/landscape-config.1 | ||
333 | 214 | +++ b/man/landscape-config.1 | ||
334 | 215 | @@ -1,5 +1,5 @@ | ||
335 | 216 | .\" Text automatically generated by txt2man | ||
336 | 217 | -.TH landscape-config 1 "05 January 2017" "" "" | ||
337 | 218 | +.TH landscape-config 1 "14 February 2019" "" "" | ||
338 | 219 | .SH NAME | ||
339 | 220 | \fBlandscape-config \fP- configure the Landscape management client | ||
340 | 221 | \fB | ||
341 | 222 | @@ -139,6 +139,11 @@ Comma separated list of tag names to be sent to the | ||
342 | 223 | server. | ||
343 | 224 | .TP | ||
344 | 225 | .B | ||
345 | 226 | +\fB--stagger-launch\fP=STAGGER_RATIO | ||
346 | 227 | +Ratio, between 0 and 1, by which to scatter various | ||
347 | 228 | +tasks of landscape. | ||
348 | 229 | +.TP | ||
349 | 230 | +.B | ||
350 | 231 | \fB--import\fP=FILENAME_OR_URL | ||
351 | 232 | Filename or URL to import configuration from. | ||
352 | 233 | Imported \fIoptions\fP behave as if they were passed in | ||
353 | 234 | diff --git a/man/landscape-config.txt b/man/landscape-config.txt | ||
354 | 235 | index 223398b7..5a100bf0 100644 | ||
355 | 236 | --- a/man/landscape-config.txt | ||
356 | 237 | +++ b/man/landscape-config.txt | ||
357 | 238 | @@ -58,6 +58,8 @@ OPTIONS | ||
358 | 239 | EC2 or UEC. Read below for details. | ||
359 | 240 | --tags=TAGS Comma separated list of tag names to be sent to the | ||
360 | 241 | server. | ||
361 | 242 | + --stagger-launch=STAGGER_RATIO Ratio, between 0 and 1, by which to scatter various | ||
362 | 243 | + tasks of landscape. | ||
363 | 244 | --import=FILENAME_OR_URL Filename or URL to import configuration from. | ||
364 | 245 | Imported options behave as if they were passed in | ||
365 | 246 | the command line, with precedence being given to | ||
366 | 247 | diff --git a/man/landscape-sysinfo.1 b/man/landscape-sysinfo.1 | ||
367 | 248 | index e8dd2ff4..90852975 100644 | ||
368 | 249 | --- a/man/landscape-sysinfo.1 | ||
369 | 250 | +++ b/man/landscape-sysinfo.1 | ||
370 | 251 | @@ -1,5 +1,5 @@ | ||
371 | 252 | .\" Text automatically generated by txt2man | ||
372 | 253 | -.TH landscape-sysinfo 1 "07 March 2018" "" "" | ||
373 | 254 | +.TH landscape-sysinfo 1 "14 February 2019" "" "" | ||
374 | 255 | .SH NAME | ||
375 | 256 | \fBlandscape-sysinfo \fP- Display a summary of the current system status | ||
376 | 257 | \fB | ||
377 | 258 |
Thanks, comments inline