Merge lp:~jseutter/landscape-client/autodiscover-questions into lp:~landscape/landscape-client/trunk
- autodiscover-questions
- Merge into trunk
Proposed by
Jerry Seutter
Status: | Superseded | ||||
---|---|---|---|---|---|
Proposed branch: | lp:~jseutter/landscape-client/autodiscover-questions | ||||
Merge into: | lp:~landscape/landscape-client/trunk | ||||
Diff against target: |
495 lines (+130/-38) 11 files modified
debian/landscape-client.config (+9/-0) debian/landscape-client.templates (+21/-0) landscape-client.conf (+0/-2) landscape/broker/config.py (+10/-0) landscape/broker/dnslookup.py (+14/-9) landscape/broker/ping.py (+22/-4) landscape/broker/service.py (+6/-2) landscape/broker/tests/test_config.py (+4/-4) landscape/broker/tests/test_dnslookup.py (+22/-13) landscape/broker/tests/test_ping.py (+3/-1) landscape/broker/transport.py (+19/-3) |
||||
To merge this branch: | bzr merge lp:~jseutter/landscape-client/autodiscover-questions | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Landscape | Pending | ||
Landscape | Pending | ||
Review via email: mp+91957@code.launchpad.net |
This proposal has been superseded by a proposal from 2012-02-08.
Commit message
Description of the change
This branch adds questions to debconf for server autodiscovery. It asks 3 questions:
- should server autodiscovery be done?
- What string should be used for DNS SRV queries (default to _landscape.
- What string should be used for DNS A queries (default to landscape.
I don't have any experience with this so I could be doing something dubious, dastardly or even diabolical.
To post a comment you must log in.
- 459. By Jerry Seutter
-
Fixing bugs in landscape-
client. config - 460. By Jerry Seutter
-
Transmitting new settings from debconf back to landscape-client.
- 461. By Jerry Seutter
-
Adding a default setting to the templates file
- 462. By Jerry Seutter
-
Merge from trunk.
Unmerged revisions
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | === modified file 'debian/landscape-client.config' |
2 | --- debian/landscape-client.config 2011-10-07 12:14:19 +0000 |
3 | +++ debian/landscape-client.config 2012-02-08 00:58:28 +0000 |
4 | @@ -29,6 +29,9 @@ |
5 | HTTPS_PROXY=$(get_var_from_file "https_proxy" "$CONFIGFILE") |
6 | OTP=$(get_var_from_file "otp" "$CONFIGFILE") |
7 | TAGS=$(get_var_from_file "tags" "$CONFIG_FILE") |
8 | + SERVER_AUTODISCOVER=$(get_var_from_file "server_autodiscover" "$CONFIG_FILE") |
9 | + AUTODISCOVER_SRV_QUERY_STRING=$(get_var_from_file "autodiscover_srv_query_string" "$CONFIG_FILE") |
10 | + AUTODISCOVER_A_QUERY_STRING=$(get_var_from_file "autodiscover_a_query_string" "$CONFIG_FILE") |
11 | |
12 | # Store values from config file into |
13 | # debconf db. |
14 | @@ -45,6 +48,9 @@ |
15 | db_set $PACKAGE/https_proxy $HTTPS_PROXY |
16 | db_set $PACKAGE/otp $OTP |
17 | db_set $PACKAGE/tags $TAGS |
18 | + db_set $PACKAGE/server_autodiscover $TAGS |
19 | + db_set $PACKAGE/autodiscover_srv_query_string $TAGS |
20 | + db_set $PACKAGE/autodiscover_a_query_string $TAGS |
21 | fi |
22 | |
23 | # Ask questions. |
24 | @@ -58,5 +64,8 @@ |
25 | db_input "$priority" $PACKAGE/computer_title || true |
26 | db_input "$priority" $PACKAGE/account_name || true |
27 | db_input "$priority" $PACKAGE/registration_password || true |
28 | +db_input "$priority" $PACKAGE/server_autodiscover || true |
29 | +db_input "$priority" $PACKAGE/autodiscover_srv_query_string || true |
30 | +db_input "$priority" $PACKAGE/autodiscover_a_query_string || true |
31 | db_go || true |
32 | |
33 | |
34 | === modified file 'debian/landscape-client.templates' |
35 | --- debian/landscape-client.templates 2011-10-20 10:59:10 +0000 |
36 | +++ debian/landscape-client.templates 2012-02-08 00:58:28 +0000 |
37 | @@ -83,3 +83,24 @@ |
38 | Register this system with a preexisting Landscape account. Please |
39 | go to http://landscape.canonical.com if you need a Landscape account. |
40 | |
41 | +Template: landscape-client/server_autodiscover |
42 | +Type: boolean |
43 | +Default: false |
44 | +_Description: Enable server autodiscovery? |
45 | + Enable DNS searches to discover the hostname of a Landscape Dedicated |
46 | + Server. |
47 | + |
48 | +Template: landscape-client/autodiscover_srv_query_string |
49 | +Type: string |
50 | +Default: _landscape._tcp.localdomain |
51 | +_Description: DNS SRV query string for discovering the server name: |
52 | + When server autodiscovery is enabled, this string is used to make a |
53 | + DNS SRV query to find the location of the Landscape server. This |
54 | + will override portions of the ping url and https url settings. |
55 | + |
56 | +Template: landscape-client/autodiscover_a_query_string |
57 | +Type: string |
58 | +_Description: DNS A name query string for discovering the server name: |
59 | + When server autodiscovery is enabled, this string is used to make a |
60 | + DNS A name query to find the location of the Landscape server. This |
61 | + will override portions of the ping url and https url settings. |
62 | |
63 | === modified file 'landscape-client.conf' |
64 | --- landscape-client.conf 2012-01-21 00:07:53 +0000 |
65 | +++ landscape-client.conf 2012-02-08 00:58:28 +0000 |
66 | @@ -9,5 +9,3 @@ |
67 | log_level = debug |
68 | pid_file = /tmp/landscape/landscape-client.pid |
69 | ping_url = http://localhost:8081/ping |
70 | -server_autodiscover = false |
71 | - |
72 | |
73 | === modified file 'landscape/broker/config.py' |
74 | --- landscape/broker/config.py 2012-02-02 02:49:13 +0000 |
75 | +++ landscape/broker/config.py 2012-02-08 00:58:28 +0000 |
76 | @@ -45,6 +45,9 @@ |
77 | - C{otp} |
78 | - C{record} |
79 | - C{provisioning_otp} |
80 | + - C{server_autodiscover} |
81 | + - C{autodiscover_srv_query_string} |
82 | + - C{autodiscover_a_query_string} |
83 | """ |
84 | parser = super(BrokerConfiguration, self).make_parser() |
85 | |
86 | @@ -91,6 +94,13 @@ |
87 | help="The OTP to use for a provisioned machine.") |
88 | parser.add_option("--server-autodiscover", type="string", |
89 | default="false", help="Enable server autodiscovery.") |
90 | + parser.add_option("--autodiscover-srv-query-string", type="string", |
91 | + default="_tcp._landscape.localdomain", |
92 | + help="autodiscovery string for DNS SRV queries") |
93 | + parser.add_option("--autodiscover-a-query-string", type="string", |
94 | + default="landscape.localdomain", |
95 | + help="autodiscovery string for DNS A queries") |
96 | + |
97 | return parser |
98 | |
99 | @property |
100 | |
101 | === modified file 'landscape/broker/dnslookup.py' |
102 | --- landscape/broker/dnslookup.py 2012-02-02 01:39:15 +0000 |
103 | +++ landscape/broker/dnslookup.py 2012-02-08 00:58:28 +0000 |
104 | @@ -5,31 +5,36 @@ |
105 | from twisted.names.client import Resolver |
106 | |
107 | |
108 | -def discover_server(resolver=None): |
109 | +def discover_server(resolver=None, autodiscover_srv_query_string="", |
110 | + autodiscover_a_query_string=""): |
111 | """ |
112 | Look up the dns location of the landscape server. |
113 | |
114 | @type resolver: The resolver to use. If none is specified a resolver that |
115 | uses settings from /etc/resolv.conf will be created. |
116 | + @param autodiscover_srv_query_string: The query string to send to the DNS |
117 | + server when making a SRV query. |
118 | + @param autodiscover_a_query_string: The query string to send to the DNS |
119 | + server when making a A query. |
120 | """ |
121 | if not resolver: |
122 | resolver = Resolver("/etc/resolv.conf") |
123 | - d = lookup_server_record(resolver) |
124 | - d.addErrback(lookup_hostname, resolver) |
125 | + d = lookup_server_record(resolver, autodiscover_srv_query_string) |
126 | + d.addErrback(lookup_hostname, resolver, autodiscover_a_query_string) |
127 | return d |
128 | |
129 | |
130 | -def lookup_server_record(resolver): |
131 | +def lookup_server_record(resolver, service_name): |
132 | """ |
133 | Do a DNS SRV record lookup for the location of the landscape server. |
134 | |
135 | @type resolver: A resolver to use for DNS lookups |
136 | L{twisted.names.client.Resolver}. |
137 | + @param service_name: The query string to send to the DNS server when |
138 | + making a SRV query. |
139 | @return: A deferred containing either the hostname of the landscape server |
140 | if found or an empty string if not found. |
141 | """ |
142 | - service_name = "_landscape._tcp.mylandscapehost.com" |
143 | - |
144 | def lookup_done(result): |
145 | name = "" |
146 | for item in result: |
147 | @@ -49,17 +54,17 @@ |
148 | return d |
149 | |
150 | |
151 | -def lookup_hostname(result, resolver): |
152 | +def lookup_hostname(result, resolver, hostname): |
153 | """ |
154 | Do a DNS name lookup for the location of the landscape server. |
155 | |
156 | @param result: The result from a call to lookup_server_record. |
157 | @param resolver: The resolver to use for DNS lookups. |
158 | + @param hostname: The query string to send to the DNS server when making |
159 | + a A query. |
160 | @param return: A deferred containing the ip address of the landscape |
161 | server if found or None if not found. |
162 | """ |
163 | - hostname = "landscape.localdomain" |
164 | - |
165 | def lookup_done(result): |
166 | return result |
167 | |
168 | |
169 | === modified file 'landscape/broker/ping.py' |
170 | --- landscape/broker/ping.py 2012-01-27 22:00:02 +0000 |
171 | +++ landscape/broker/ping.py 2012-02-08 00:58:28 +0000 |
172 | @@ -22,10 +22,19 @@ |
173 | @param url: The URL to ask the question to. |
174 | @type identity: L{landscape.broker.registration.Identity} |
175 | @param identity: This client's identity. |
176 | + @param get_page: The method to use to retrieve content. If not specified, |
177 | + landscape.lib.fetch.fetch is used. |
178 | + @param server_autodiscovery: Server autodiscovery is performed if True, |
179 | + otherwise server autodiscover is not done. |
180 | + @param autodiscover_srv_query_string: If server autodiscovery is done, this |
181 | + string will be sent to the DNS server when making a SRV query. |
182 | + @param autodiscover_a_query_string: If server autodiscovery is done, this |
183 | + string will be sent to the DNS server when making an A query. |
184 | """ |
185 | |
186 | def __init__(self, reactor, url, identity, get_page=None, |
187 | - server_autodiscover=False): |
188 | + server_autodiscover=False, autodiscover_srv_query_string="", |
189 | + autodiscover_a_query_string=""): |
190 | if get_page is None: |
191 | get_page = fetch |
192 | self._reactor = reactor |
193 | @@ -33,6 +42,8 @@ |
194 | self.get_page = get_page |
195 | self.url = url |
196 | self._server_autodiscover = server_autodiscover |
197 | + self._autodiscover_srv_query_string = autodiscover_srv_query_string |
198 | + self._autodiscover_a_query_string = autodiscover_a_query_string |
199 | |
200 | def ping(self): |
201 | """Ask the question. |
202 | @@ -72,7 +83,9 @@ |
203 | return defer.succeed(False) |
204 | |
205 | if self._server_autodiscover: |
206 | - lookup_deferred = discover_server() |
207 | + lookup_deferred = discover_server( |
208 | + None, self._autodiscover_srv_query_string, |
209 | + self._autodiscover_a_query_string) |
210 | lookup_deferred.addCallback(handle_result) |
211 | lookup_deferred.addCallback(do_rest) |
212 | return lookup_deferred |
213 | @@ -103,7 +116,8 @@ |
214 | |
215 | def __init__(self, reactor, url, identity, exchanger, |
216 | interval=30, ping_client_factory=PingClient, |
217 | - server_autodiscover=False): |
218 | + server_autodiscover=False, autodiscover_srv_query_string="", |
219 | + autodiscover_a_query_string=""): |
220 | self._url = url |
221 | self._interval = interval |
222 | self._identity = identity |
223 | @@ -113,6 +127,8 @@ |
224 | self._ping_client = None |
225 | self.ping_client_factory = ping_client_factory |
226 | self._server_autodiscover = server_autodiscover |
227 | + self._autodiscover_srv_query_string = autodiscover_srv_query_string |
228 | + self._autodiscover_a_query_string = autodiscover_a_query_string |
229 | reactor.call_on("message", self._handle_set_intervals) |
230 | |
231 | def get_url(self): |
232 | @@ -130,7 +146,9 @@ |
233 | """Start pinging.""" |
234 | self._ping_client = self.ping_client_factory( |
235 | self._reactor, self._url, self._identity, |
236 | - server_autodiscover=self._server_autodiscover) |
237 | + server_autodiscover=self._server_autodiscover, |
238 | + autodiscover_srv_query_string=self._autodiscover_srv_query_string, |
239 | + autodiscover_a_query_string=self._autodiscover_a_query_string) |
240 | self._call_id = self._reactor.call_every(self._interval, self.ping) |
241 | |
242 | def ping(self): |
243 | |
244 | === modified file 'landscape/broker/service.py' |
245 | --- landscape/broker/service.py 2012-01-30 16:11:20 +0000 |
246 | +++ landscape/broker/service.py 2012-02-08 00:58:28 +0000 |
247 | @@ -55,7 +55,9 @@ |
248 | |
249 | self.transport = self.transport_factory( |
250 | self.reactor, config.url, config.ssl_public_key, |
251 | - self.payload_recorder, config.server_autodiscover) |
252 | + self.payload_recorder, config.server_autodiscover, |
253 | + config.autodiscover_srv_query_string, |
254 | + config.autodiscover_a_query_string) |
255 | self.message_store = get_default_message_store( |
256 | self.persist, config.message_store_path) |
257 | self.identity = Identity(self.config, self.persist) |
258 | @@ -66,7 +68,9 @@ |
259 | self.pinger = self.pinger_factory( |
260 | self.reactor, config.ping_url, self.identity, self.exchanger, |
261 | interval=config.ping_interval, |
262 | - server_autodiscover=config.server_autodiscover) |
263 | + server_autodiscover=config.server_autodiscover, |
264 | + autodiscover_srv_query_string=config.autodiscover_srv_query_string, |
265 | + autodiscover_a_query_string=config.autodiscover_a_query_string) |
266 | self.registration = RegistrationHandler( |
267 | config, self.identity, self.reactor, self.exchanger, self.pinger, |
268 | self.message_store, fetch_async) |
269 | |
270 | === modified file 'landscape/broker/tests/test_config.py' |
271 | --- landscape/broker/tests/test_config.py 2012-02-02 02:49:13 +0000 |
272 | +++ landscape/broker/tests/test_config.py 2012-02-08 00:58:28 +0000 |
273 | @@ -92,19 +92,19 @@ |
274 | self.assertEqual(configuration.url, |
275 | "https://landscape.canonical.com/message-system") |
276 | |
277 | - def test_server_autodiscovery_handling(self): |
278 | + def test_server_autodiscover_handling(self): |
279 | """ |
280 | server_autodiscover is parsed and converted to a boolean value by |
281 | load(). |
282 | """ |
283 | configuration = BrokerConfiguration() |
284 | configuration.load([]) |
285 | - self.assertEquals(configuration.server_autodiscover, False) |
286 | + self.assertEqual(configuration.server_autodiscover, False) |
287 | |
288 | configuration = BrokerConfiguration() |
289 | configuration.load(["--server-autodiscover=true"]) |
290 | - self.assertEquals(configuration.server_autodiscover, True) |
291 | + self.assertEqual(configuration.server_autodiscover, True) |
292 | |
293 | configuration = BrokerConfiguration() |
294 | configuration.load(["--server-autodiscover=false"]) |
295 | - self.assertEquals(configuration.server_autodiscover, False) |
296 | + self.assertEqual(configuration.server_autodiscover, False) |
297 | |
298 | === modified file 'landscape/broker/tests/test_dnslookup.py' |
299 | --- landscape/broker/tests/test_dnslookup.py 2012-02-02 01:39:15 +0000 |
300 | +++ landscape/broker/tests/test_dnslookup.py 2012-02-08 00:58:28 +0000 |
301 | @@ -46,13 +46,16 @@ |
302 | def __init__(self): |
303 | self.results = None |
304 | self.name = None |
305 | + self.queried = None |
306 | |
307 | def lookupService(self, arg1): |
308 | + self.queried = arg1 |
309 | deferred = defer.Deferred() |
310 | deferred.callback(self.results) |
311 | return deferred |
312 | |
313 | def getHostByName(self, arg1): |
314 | + self.queried = arg1 |
315 | deferred = defer.Deferred() |
316 | deferred.callback(self.name) |
317 | return deferred |
318 | @@ -84,11 +87,13 @@ |
319 | fake_result.payload.target.name = "a.b.com" |
320 | fake_resolver = FakeResolver() |
321 | fake_resolver.results = [[fake_result]] |
322 | + query_string = "_landscape._tcp.mylandscapehost.com" |
323 | |
324 | def check(result): |
325 | - self.assertEquals("a.b.com", result) |
326 | + self.assertEqual(fake_resolver.queried, query_string) |
327 | + self.assertEqual("a.b.com", result) |
328 | |
329 | - d = lookup_server_record(fake_resolver) |
330 | + d = lookup_server_record(fake_resolver, query_string) |
331 | d.addCallback(check) |
332 | return d |
333 | |
334 | @@ -101,9 +106,10 @@ |
335 | fake_resolver.results = [[]] |
336 | |
337 | def check(result): |
338 | - self.assertEquals("", result) |
339 | + self.assertEqual("", result) |
340 | |
341 | - d = lookup_server_record(fake_resolver) |
342 | + d = lookup_server_record(fake_resolver, |
343 | + "_landscape._tcp.mylandscapehost.com") |
344 | d.addCallback(check) |
345 | return d |
346 | |
347 | @@ -115,7 +121,8 @@ |
348 | "failed.") |
349 | self.mocker.replay() |
350 | |
351 | - d = lookup_server_record(BadResolver()) |
352 | + d = lookup_server_record(BadResolver(), |
353 | + "_landscape._tcp.mylandscapehost.com") |
354 | self.assertFailure(d, ResolverError) |
355 | return d |
356 | |
357 | @@ -127,11 +134,13 @@ |
358 | """ |
359 | fake_resolver = FakeResolver() |
360 | fake_resolver.name = "a.b.com" |
361 | + query_string = "landscape.localdomain" |
362 | |
363 | def check(result): |
364 | - self.assertEquals("a.b.com", result) |
365 | + self.assertEqual(fake_resolver.queried, query_string) |
366 | + self.assertEqual("a.b.com", result) |
367 | |
368 | - d = lookup_hostname(None, fake_resolver) |
369 | + d = lookup_hostname(None, fake_resolver, query_string) |
370 | d.addCallback(check) |
371 | return d |
372 | |
373 | @@ -144,9 +153,9 @@ |
374 | fake_resolver.name = None |
375 | |
376 | def check(result): |
377 | - self.assertEquals(None, result) |
378 | + self.assertEqual(None, result) |
379 | |
380 | - d = lookup_hostname(None, fake_resolver) |
381 | + d = lookup_hostname(None, fake_resolver, "landscape.localdomain") |
382 | d.addCallback(check) |
383 | return d |
384 | |
385 | @@ -157,7 +166,7 @@ |
386 | logging_mock("Name lookup of landscape.localdomain failed.") |
387 | self.mocker.replay() |
388 | |
389 | - d = lookup_hostname(None, BadResolver()) |
390 | + d = lookup_hostname(None, BadResolver(), "landscape.localdomain") |
391 | self.assertFailure(d, ResolverError) |
392 | return d |
393 | |
394 | @@ -174,7 +183,7 @@ |
395 | d = discover_server(fake_resolver) |
396 | |
397 | def check(result): |
398 | - self.assertEquals("a.b.com", result) |
399 | + self.assertEqual("a.b.com", result) |
400 | |
401 | d.addCallback(check) |
402 | return d |
403 | @@ -187,13 +196,13 @@ |
404 | d = discover_server(fake_resolver) |
405 | |
406 | def check(result): |
407 | - self.assertEquals("x.y.com", result) |
408 | + self.assertEqual("x.y.com", result) |
409 | |
410 | d.addCallback(check) |
411 | return d |
412 | |
413 | def test_failed_lookup(self): |
414 | """A resolver error is returned when server autodiscovery fails.""" |
415 | - d = lookup_server_record(BadResolver()) |
416 | + d = lookup_server_record(BadResolver(), "landscape.localdomain") |
417 | self.assertFailure(d, ResolverError) |
418 | return d |
419 | |
420 | === modified file 'landscape/broker/tests/test_ping.py' |
421 | --- landscape/broker/tests/test_ping.py 2012-01-19 23:34:55 +0000 |
422 | +++ landscape/broker/tests/test_ping.py 2012-02-08 00:58:28 +0000 |
423 | @@ -128,7 +128,9 @@ |
424 | self.url = "http://localhost:8081/whatever" |
425 | self.page_getter = FakePageGetter(None) |
426 | |
427 | - def factory(reactor, url, insecure_id, server_autodiscover): |
428 | + def factory(reactor, url, insecure_id, server_autodiscover, |
429 | + autodiscover_srv_query_string, |
430 | + autodiscover_a_query_string): |
431 | return PingClient(reactor, url, insecure_id, |
432 | get_page=self.page_getter.get_page) |
433 | self.pinger = Pinger(self.broker_service.reactor, |
434 | |
435 | === modified file 'landscape/broker/transport.py' |
436 | --- landscape/broker/transport.py 2012-01-26 23:37:53 +0000 |
437 | +++ landscape/broker/transport.py 2012-02-08 00:58:28 +0000 |
438 | @@ -22,15 +22,24 @@ |
439 | @param pubkey: SSH public key used for secure communication. |
440 | @param payload_recorder: PayloadRecorder used for recording exchanges |
441 | with the server. If C{None}, exchanges will not be recorded. |
442 | + @param server_autodiscovery: Server autodiscovery is performed if True, |
443 | + otherwise server autodiscover is not done. |
444 | + @param autodiscover_srv_query_string: If server autodiscovery is done, this |
445 | + string will be sent to the DNS server when making a SRV query. |
446 | + @param autodiscover_a_query_string: If server autodiscovery is done, this |
447 | + string will be sent to the DNS server when making an A query. |
448 | """ |
449 | |
450 | def __init__(self, reactor, url, pubkey=None, payload_recorder=None, |
451 | - server_autodiscover=False): |
452 | + server_autodiscover=False, autodiscover_srv_query_string="", |
453 | + autodiscover_a_query_string=""): |
454 | self._reactor = reactor |
455 | self._url = url |
456 | self._pubkey = pubkey |
457 | self._payload_recorder = payload_recorder |
458 | self._server_autodiscover = server_autodiscover |
459 | + self._autodiscover_srv_query_string = autodiscover_srv_query_string |
460 | + self._autodiscover_a_query_string = autodiscover_a_query_string |
461 | |
462 | def get_url(self): |
463 | """Get the URL of the remote message system.""" |
464 | @@ -42,7 +51,10 @@ |
465 | |
466 | def _curl(self, payload, computer_id, message_api): |
467 | if self._server_autodiscover: |
468 | - result = blockingCallFromThread(self._reactor, discover_server) |
469 | + result = blockingCallFromThread( |
470 | + self._reactor, discover_server, None, |
471 | + self._autodiscover_srv_query_string, |
472 | + self._autodiscover_a_query_string) |
473 | if result is not None: |
474 | self._url = "https://%s/message-system" % result |
475 | else: |
476 | @@ -166,7 +178,9 @@ |
477 | """Fake transport for testing purposes.""" |
478 | |
479 | def __init__(self, reactor=None, url=None, pubkey=None, |
480 | - payload_recorder=None, server_autodiscover=False): |
481 | + payload_recorder=None, server_autodiscover=False, |
482 | + autodiscover_srv_query_string="", |
483 | + autodiscover_a_query_string=""): |
484 | self._pubkey = pubkey |
485 | self._payload_recorder = payload_recorder |
486 | self.payloads = [] |
487 | @@ -179,6 +193,8 @@ |
488 | self._url = url |
489 | self._reactor = reactor |
490 | self._server_autodiscover = server_autodiscover |
491 | + self._autodiscover_srv_query_string = autodiscover_srv_query_string |
492 | + self._autodiscover_a_query_string = autodiscover_a_query_string |
493 | |
494 | def get_url(self): |
495 | return self._url |