Merge lp:~axwalk/juju-core/lp1313785-ssh-useproxy into lp:~go-bot/juju-core/trunk
- lp1313785-ssh-useproxy
- Merge into trunk
Status: | Merged | ||||
---|---|---|---|---|---|
Approved by: | Andrew Wilkins | ||||
Approved revision: | no longer in the source branch. | ||||
Merged at revision: | 2714 | ||||
Proposed branch: | lp:~axwalk/juju-core/lp1313785-ssh-useproxy | ||||
Merge into: | lp:~go-bot/juju-core/trunk | ||||
Diff against target: |
295 lines (+81/-68) 5 files modified
cmd/juju/debughooks_test.go (+32/-24) cmd/juju/scp.go (+5/-10) cmd/juju/scp_test.go (+10/-2) cmd/juju/ssh.go (+22/-12) cmd/juju/ssh_test.go (+12/-20) |
||||
To merge this branch: | bzr merge lp:~axwalk/juju-core/lp1313785-ssh-useproxy | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Juju Engineering | Pending | ||
Review via email: mp+218911@code.launchpad.net |
Commit message
cmd/juju: check use-proxy before resolving address
We were translating machin/unit IDs to internal addresses
even if use-proxy=false. This manifested most prominently
when attempting to juju ssh to a machine or unit in a 1.18
environment.
Fixes lp:1313785
Description of the change
cmd/juju: check use-proxy before resolving address
We were translating machin/unit IDs to internal addresses
even if use-proxy=false. This manifested most prominently
when attempting to juju ssh to a machine or unit in a 1.18
environment.
Fixes lp:1313785
Andrew Wilkins (axwalk) wrote : | # |
Andrew Wilkins (axwalk) wrote : | # |
Please take a look.
William Reade (fwereade) wrote : | # |
LGTM with minors
https:/
File cmd/juju/
https:/
cmd/juju/
+ "<email address hidden> sudo /bin/bash -c 'F=$(mktemp); echo
IyEvYmluL2Jhc2g
| base64 -d > $F; . $F'\n"),
I kinda feel that one of these ought to still be using .dns -- wouldn't
these carry on passing if we changed to always-
https:/
File cmd/juju/ssh.go (right):
https:/
cmd/juju/
can we maybe wrap...
Andrew Wilkins (axwalk) wrote : | # |
Please take a look.
https:/
File cmd/juju/
https:/
cmd/juju/
+ "<email address hidden> sudo /bin/bash -c 'F=$(mktemp); echo
IyEvYmluL2Jhc2g
| base64 -d > $F; . $F'\n"),
On 2014/05/09 06:47:58, fwereade wrote:
> I kinda feel that one of these ought to still be using .dns --
wouldn't these
> carry on passing if we changed to always-
Reverted these, and added a new test that explicitly tests --proxy=true.
https:/
File cmd/juju/ssh.go (right)...
Go Bot (go-bot) wrote : | # |
The attempt to merge lp:~axwalk/juju-core/lp1313785-ssh-useproxy into lp:juju-core failed. Below is the output from the failed tests.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
? launchpad.
? launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
ok launchpad.
? launchpad.
ok launchpad.
ok launchpad.
? launchpad.
Preview Diff
1 | === modified file 'cmd/juju/debughooks_test.go' |
2 | --- cmd/juju/debughooks_test.go 2014-02-22 11:28:24 +0000 |
3 | +++ cmd/juju/debughooks_test.go 2014-05-09 07:43:16 +0000 |
4 | @@ -4,12 +4,10 @@ |
5 | package main |
6 | |
7 | import ( |
8 | - "bytes" |
9 | "regexp" |
10 | |
11 | gc "launchpad.net/gocheck" |
12 | |
13 | - "launchpad.net/juju-core/cmd" |
14 | coretesting "launchpad.net/juju-core/testing" |
15 | ) |
16 | |
17 | @@ -20,19 +18,24 @@ |
18 | } |
19 | |
20 | const debugHooksArgs = sshArgs |
21 | +const debugHooksArgsNoProxy = sshArgsNoProxy |
22 | |
23 | var debugHooksTests = []struct { |
24 | info string |
25 | args []string |
26 | - code int |
27 | + error string |
28 | + proxy bool |
29 | result string |
30 | - stderr string |
31 | }{{ |
32 | args: []string{"mysql/0"}, |
33 | - result: regexp.QuoteMeta(debugHooksArgs + "ubuntu@dummyenv-0.dns sudo /bin/bash -c 'F=$(mktemp); echo IyEvYmluL2Jhc2gKKAojIExvY2sgdGhlIGp1anUtPHVuaXQ+LWRlYnVnIGxvY2tmaWxlLgpmbG9jayAtbiA4IHx8IChlY2hvICJGYWlsZWQgdG8gYWNxdWlyZSAvdG1wL2p1anUtdW5pdC1teXNxbC0wLWRlYnVnLWhvb2tzOiB1bml0IGlzIGFscmVhZHkgYmVpbmcgZGVidWdnZWQiIDI+JjE7IGV4aXQgMSkKKAojIENsb3NlIHRoZSBpbmhlcml0ZWQgbG9jayBGRCwgb3IgdG11eCB3aWxsIGtlZXAgaXQgb3Blbi4KZXhlYyA4PiYtCgojIFdyaXRlIG91dCB0aGUgZGVidWctaG9va3MgYXJncy4KZWNobyAiZTMwSyIgfCBiYXNlNjQgLWQgPiAvdG1wL2p1anUtdW5pdC1teXNxbC0wLWRlYnVnLWhvb2tzCgojIExvY2sgdGhlIGp1anUtPHVuaXQ+LWRlYnVnLWV4aXQgbG9ja2ZpbGUuCmZsb2NrIC1uIDkgfHwgZXhpdCAxCgojIFdhaXQgZm9yIHRtdXggdG8gYmUgaW5zdGFsbGVkLgp3aGlsZSBbICEgLWYgL3Vzci9iaW4vdG11eCBdOyBkbwogICAgc2xlZXAgMQpkb25lCgppZiBbICEgLWYgfi8udG11eC5jb25mIF07IHRoZW4KICAgICAgICBpZiBbIC1mIC91c3Ivc2hhcmUvYnlvYnUvcHJvZmlsZXMvdG11eCBdOyB0aGVuCiAgICAgICAgICAgICAgICAjIFVzZSBieW9idS90bXV4IHByb2ZpbGUgZm9yIGZhbWlsaWFyIGtleWJpbmRpbmdzIGFuZCBicmFuZGluZwogICAgICAgICAgICAgICAgZWNobyAic291cmNlLWZpbGUgL3Vzci9zaGFyZS9ieW9idS9wcm9maWxlcy90bXV4IiA+IH4vLnRtdXguY29uZgogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGxlZ2FjeSBqdWp1L3RtdXggY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgY2F0ID4gfi8udG11eC5jb25mIDw8RU5ECiAgICAgICAgICAgICAgICAKIyBTdGF0dXMgYmFyCnNldC1vcHRpb24gLWcgc3RhdHVzLWJnIGJsYWNrCnNldC1vcHRpb24gLWcgc3RhdHVzLWZnIHdoaXRlCgpzZXQtd2luZG93LW9wdGlvbiAtZyB3aW5kb3ctc3RhdHVzLWN1cnJlbnQtYmcgcmVkCnNldC13aW5kb3ctb3B0aW9uIC1nIHdpbmRvdy1zdGF0dXMtY3VycmVudC1hdHRyIGJyaWdodAoKc2V0LW9wdGlvbiAtZyBzdGF0dXMtcmlnaHQgJycKCiMgUGFuZXMKc2V0LW9wdGlvbiAtZyBwYW5lLWJvcmRlci1mZyB3aGl0ZQpzZXQtb3B0aW9uIC1nIHBhbmUtYWN0aXZlLWJvcmRlci1mZyB3aGl0ZQoKIyBNb25pdG9yIGFjdGl2aXR5IG9uIHdpbmRvd3MKc2V0LXdpbmRvdy1vcHRpb24gLWcgbW9uaXRvci1hY3Rpdml0eSBvbgoKIyBTY3JlZW4gYmluZGluZ3MsIHNpbmNlIHBlb3BsZSBhcmUgbW9yZSBmYW1pbGlhciB3aXRoIHRoYXQuCnNldC1vcHRpb24gLWcgcHJlZml4IEMtYQpiaW5kIEMtYSBsYXN0LXdpbmRvdwpiaW5kIGEgc2VuZC1rZXkgQy1hCgpiaW5kIHwgc3BsaXQtd2luZG93IC1oCmJpbmQgLSBzcGxpdC13aW5kb3cgLXYKCiMgRml4IENUUkwtUEdVUC9QR0RPV04gZm9yIHZpbQpzZXQtd2luZG93LW9wdGlvbiAtZyB4dGVybS1rZXlzIG9uCgojIFByZXZlbnQgRVNDIGtleSBmcm9tIGFkZGluZyBkZWxheSBhbmQgYnJlYWtpbmcgVmltJ3MgRVNDID4gYXJyb3cga2V5CnNldC1vcHRpb24gLXMgZXNjYXBlLXRpbWUgMAoKRU5ECiAgICAgICAgZmkKZmkKCigKICAgICMgQ2xvc2UgdGhlIGluaGVyaXRlZCBsb2NrIEZELCBvciB0bXV4IHdpbGwga2VlcCBpdCBvcGVuLgogICAgZXhlYyA5PiYtCiAgICBleGVjIHRtdXggbmV3LXNlc3Npb24gLXMgbXlzcWwvMAopCikgOT4vdG1wL2p1anUtdW5pdC1teXNxbC0wLWRlYnVnLWhvb2tzLWV4aXQKKSA4Pi90bXAvanVqdS11bml0LW15c3FsLTAtZGVidWctaG9va3MKZXhpdCAkPwo= | base64 -d > $F; . $F'\n"), |
34 | + result: regexp.QuoteMeta(debugHooksArgsNoProxy + "ubuntu@dummyenv-0.dns sudo /bin/bash -c 'F=$(mktemp); echo IyEvYmluL2Jhc2gKKAojIExvY2sgdGhlIGp1anUtPHVuaXQ+LWRlYnVnIGxvY2tmaWxlLgpmbG9jayAtbiA4IHx8IChlY2hvICJGYWlsZWQgdG8gYWNxdWlyZSAvdG1wL2p1anUtdW5pdC1teXNxbC0wLWRlYnVnLWhvb2tzOiB1bml0IGlzIGFscmVhZHkgYmVpbmcgZGVidWdnZWQiIDI+JjE7IGV4aXQgMSkKKAojIENsb3NlIHRoZSBpbmhlcml0ZWQgbG9jayBGRCwgb3IgdG11eCB3aWxsIGtlZXAgaXQgb3Blbi4KZXhlYyA4PiYtCgojIFdyaXRlIG91dCB0aGUgZGVidWctaG9va3MgYXJncy4KZWNobyAiZTMwSyIgfCBiYXNlNjQgLWQgPiAvdG1wL2p1anUtdW5pdC1teXNxbC0wLWRlYnVnLWhvb2tzCgojIExvY2sgdGhlIGp1anUtPHVuaXQ+LWRlYnVnLWV4aXQgbG9ja2ZpbGUuCmZsb2NrIC1uIDkgfHwgZXhpdCAxCgojIFdhaXQgZm9yIHRtdXggdG8gYmUgaW5zdGFsbGVkLgp3aGlsZSBbICEgLWYgL3Vzci9iaW4vdG11eCBdOyBkbwogICAgc2xlZXAgMQpkb25lCgppZiBbICEgLWYgfi8udG11eC5jb25mIF07IHRoZW4KICAgICAgICBpZiBbIC1mIC91c3Ivc2hhcmUvYnlvYnUvcHJvZmlsZXMvdG11eCBdOyB0aGVuCiAgICAgICAgICAgICAgICAjIFVzZSBieW9idS90bXV4IHByb2ZpbGUgZm9yIGZhbWlsaWFyIGtleWJpbmRpbmdzIGFuZCBicmFuZGluZwogICAgICAgICAgICAgICAgZWNobyAic291cmNlLWZpbGUgL3Vzci9zaGFyZS9ieW9idS9wcm9maWxlcy90bXV4IiA+IH4vLnRtdXguY29uZgogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGxlZ2FjeSBqdWp1L3RtdXggY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgY2F0ID4gfi8udG11eC5jb25mIDw8RU5ECiAgICAgICAgICAgICAgICAKIyBTdGF0dXMgYmFyCnNldC1vcHRpb24gLWcgc3RhdHVzLWJnIGJsYWNrCnNldC1vcHRpb24gLWcgc3RhdHVzLWZnIHdoaXRlCgpzZXQtd2luZG93LW9wdGlvbiAtZyB3aW5kb3ctc3RhdHVzLWN1cnJlbnQtYmcgcmVkCnNldC13aW5kb3ctb3B0aW9uIC1nIHdpbmRvdy1zdGF0dXMtY3VycmVudC1hdHRyIGJyaWdodAoKc2V0LW9wdGlvbiAtZyBzdGF0dXMtcmlnaHQgJycKCiMgUGFuZXMKc2V0LW9wdGlvbiAtZyBwYW5lLWJvcmRlci1mZyB3aGl0ZQpzZXQtb3B0aW9uIC1nIHBhbmUtYWN0aXZlLWJvcmRlci1mZyB3aGl0ZQoKIyBNb25pdG9yIGFjdGl2aXR5IG9uIHdpbmRvd3MKc2V0LXdpbmRvdy1vcHRpb24gLWcgbW9uaXRvci1hY3Rpdml0eSBvbgoKIyBTY3JlZW4gYmluZGluZ3MsIHNpbmNlIHBlb3BsZSBhcmUgbW9yZSBmYW1pbGlhciB3aXRoIHRoYXQuCnNldC1vcHRpb24gLWcgcHJlZml4IEMtYQpiaW5kIEMtYSBsYXN0LXdpbmRvdwpiaW5kIGEgc2VuZC1rZXkgQy1hCgpiaW5kIHwgc3BsaXQtd2luZG93IC1oCmJpbmQgLSBzcGxpdC13aW5kb3cgLXYKCiMgRml4IENUUkwtUEdVUC9QR0RPV04gZm9yIHZpbQpzZXQtd2luZG93LW9wdGlvbiAtZyB4dGVybS1rZXlzIG9uCgojIFByZXZlbnQgRVNDIGtleSBmcm9tIGFkZGluZyBkZWxheSBhbmQgYnJlYWtpbmcgVmltJ3MgRVNDID4gYXJyb3cga2V5CnNldC1vcHRpb24gLXMgZXNjYXBlLXRpbWUgMAoKRU5ECiAgICAgICAgZmkKZmkKCigKICAgICMgQ2xvc2UgdGhlIGluaGVyaXRlZCBsb2NrIEZELCBvciB0bXV4IHdpbGwga2VlcCBpdCBvcGVuLgogICAgZXhlYyA5PiYtCiAgICBleGVjIHRtdXggbmV3LXNlc3Npb24gLXMgbXlzcWwvMAopCikgOT4vdG1wL2p1anUtdW5pdC1teXNxbC0wLWRlYnVnLWhvb2tzLWV4aXQKKSA4Pi90bXAvanVqdS11bml0LW15c3FsLTAtZGVidWctaG9va3MKZXhpdCAkPwo= | base64 -d > $F; . $F'\n"), |
35 | }, { |
36 | args: []string{"mongodb/1"}, |
37 | - result: regexp.QuoteMeta(debugHooksArgs + "ubuntu@dummyenv-2.dns sudo /bin/bash -c 'F=$(mktemp); echo IyEvYmluL2Jhc2gKKAojIExvY2sgdGhlIGp1anUtPHVuaXQ+LWRlYnVnIGxvY2tmaWxlLgpmbG9jayAtbiA4IHx8IChlY2hvICJGYWlsZWQgdG8gYWNxdWlyZSAvdG1wL2p1anUtdW5pdC1tb25nb2RiLTEtZGVidWctaG9va3M6IHVuaXQgaXMgYWxyZWFkeSBiZWluZyBkZWJ1Z2dlZCIgMj4mMTsgZXhpdCAxKQooCiMgQ2xvc2UgdGhlIGluaGVyaXRlZCBsb2NrIEZELCBvciB0bXV4IHdpbGwga2VlcCBpdCBvcGVuLgpleGVjIDg+Ji0KCiMgV3JpdGUgb3V0IHRoZSBkZWJ1Zy1ob29rcyBhcmdzLgplY2hvICJlMzBLIiB8IGJhc2U2NCAtZCA+IC90bXAvanVqdS11bml0LW1vbmdvZGItMS1kZWJ1Zy1ob29rcwoKIyBMb2NrIHRoZSBqdWp1LTx1bml0Pi1kZWJ1Zy1leGl0IGxvY2tmaWxlLgpmbG9jayAtbiA5IHx8IGV4aXQgMQoKIyBXYWl0IGZvciB0bXV4IHRvIGJlIGluc3RhbGxlZC4Kd2hpbGUgWyAhIC1mIC91c3IvYmluL3RtdXggXTsgZG8KICAgIHNsZWVwIDEKZG9uZQoKaWYgWyAhIC1mIH4vLnRtdXguY29uZiBdOyB0aGVuCiAgICAgICAgaWYgWyAtZiAvdXNyL3NoYXJlL2J5b2J1L3Byb2ZpbGVzL3RtdXggXTsgdGhlbgogICAgICAgICAgICAgICAgIyBVc2UgYnlvYnUvdG11eCBwcm9maWxlIGZvciBmYW1pbGlhciBrZXliaW5kaW5ncyBhbmQgYnJhbmRpbmcKICAgICAgICAgICAgICAgIGVjaG8gInNvdXJjZS1maWxlIC91c3Ivc2hhcmUvYnlvYnUvcHJvZmlsZXMvdG11eCIgPiB+Ly50bXV4LmNvbmYKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBsZWdhY3kganVqdS90bXV4IGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGNhdCA+IH4vLnRtdXguY29uZiA8PEVORAogICAgICAgICAgICAgICAgCiMgU3RhdHVzIGJhcgpzZXQtb3B0aW9uIC1nIHN0YXR1cy1iZyBibGFjawpzZXQtb3B0aW9uIC1nIHN0YXR1cy1mZyB3aGl0ZQoKc2V0LXdpbmRvdy1vcHRpb24gLWcgd2luZG93LXN0YXR1cy1jdXJyZW50LWJnIHJlZApzZXQtd2luZG93LW9wdGlvbiAtZyB3aW5kb3ctc3RhdHVzLWN1cnJlbnQtYXR0ciBicmlnaHQKCnNldC1vcHRpb24gLWcgc3RhdHVzLXJpZ2h0ICcnCgojIFBhbmVzCnNldC1vcHRpb24gLWcgcGFuZS1ib3JkZXItZmcgd2hpdGUKc2V0LW9wdGlvbiAtZyBwYW5lLWFjdGl2ZS1ib3JkZXItZmcgd2hpdGUKCiMgTW9uaXRvciBhY3Rpdml0eSBvbiB3aW5kb3dzCnNldC13aW5kb3ctb3B0aW9uIC1nIG1vbml0b3ItYWN0aXZpdHkgb24KCiMgU2NyZWVuIGJpbmRpbmdzLCBzaW5jZSBwZW9wbGUgYXJlIG1vcmUgZmFtaWxpYXIgd2l0aCB0aGF0LgpzZXQtb3B0aW9uIC1nIHByZWZpeCBDLWEKYmluZCBDLWEgbGFzdC13aW5kb3cKYmluZCBhIHNlbmQta2V5IEMtYQoKYmluZCB8IHNwbGl0LXdpbmRvdyAtaApiaW5kIC0gc3BsaXQtd2luZG93IC12CgojIEZpeCBDVFJMLVBHVVAvUEdET1dOIGZvciB2aW0Kc2V0LXdpbmRvdy1vcHRpb24gLWcgeHRlcm0ta2V5cyBvbgoKIyBQcmV2ZW50IEVTQyBrZXkgZnJvbSBhZGRpbmcgZGVsYXkgYW5kIGJyZWFraW5nIFZpbSdzIEVTQyA+IGFycm93IGtleQpzZXQtb3B0aW9uIC1zIGVzY2FwZS10aW1lIDAKCkVORAogICAgICAgIGZpCmZpCgooCiAgICAjIENsb3NlIHRoZSBpbmhlcml0ZWQgbG9jayBGRCwgb3IgdG11eCB3aWxsIGtlZXAgaXQgb3Blbi4KICAgIGV4ZWMgOT4mLQogICAgZXhlYyB0bXV4IG5ldy1zZXNzaW9uIC1zIG1vbmdvZGIvMQopCikgOT4vdG1wL2p1anUtdW5pdC1tb25nb2RiLTEtZGVidWctaG9va3MtZXhpdAopIDg+L3RtcC9qdWp1LXVuaXQtbW9uZ29kYi0xLWRlYnVnLWhvb2tzCmV4aXQgJD8K | base64 -d > $F; . $F'\n"), |
38 | + result: regexp.QuoteMeta(debugHooksArgsNoProxy + "ubuntu@dummyenv-2.dns sudo /bin/bash -c 'F=$(mktemp); echo IyEvYmluL2Jhc2gKKAojIExvY2sgdGhlIGp1anUtPHVuaXQ+LWRlYnVnIGxvY2tmaWxlLgpmbG9jayAtbiA4IHx8IChlY2hvICJGYWlsZWQgdG8gYWNxdWlyZSAvdG1wL2p1anUtdW5pdC1tb25nb2RiLTEtZGVidWctaG9va3M6IHVuaXQgaXMgYWxyZWFkeSBiZWluZyBkZWJ1Z2dlZCIgMj4mMTsgZXhpdCAxKQooCiMgQ2xvc2UgdGhlIGluaGVyaXRlZCBsb2NrIEZELCBvciB0bXV4IHdpbGwga2VlcCBpdCBvcGVuLgpleGVjIDg+Ji0KCiMgV3JpdGUgb3V0IHRoZSBkZWJ1Zy1ob29rcyBhcmdzLgplY2hvICJlMzBLIiB8IGJhc2U2NCAtZCA+IC90bXAvanVqdS11bml0LW1vbmdvZGItMS1kZWJ1Zy1ob29rcwoKIyBMb2NrIHRoZSBqdWp1LTx1bml0Pi1kZWJ1Zy1leGl0IGxvY2tmaWxlLgpmbG9jayAtbiA5IHx8IGV4aXQgMQoKIyBXYWl0IGZvciB0bXV4IHRvIGJlIGluc3RhbGxlZC4Kd2hpbGUgWyAhIC1mIC91c3IvYmluL3RtdXggXTsgZG8KICAgIHNsZWVwIDEKZG9uZQoKaWYgWyAhIC1mIH4vLnRtdXguY29uZiBdOyB0aGVuCiAgICAgICAgaWYgWyAtZiAvdXNyL3NoYXJlL2J5b2J1L3Byb2ZpbGVzL3RtdXggXTsgdGhlbgogICAgICAgICAgICAgICAgIyBVc2UgYnlvYnUvdG11eCBwcm9maWxlIGZvciBmYW1pbGlhciBrZXliaW5kaW5ncyBhbmQgYnJhbmRpbmcKICAgICAgICAgICAgICAgIGVjaG8gInNvdXJjZS1maWxlIC91c3Ivc2hhcmUvYnlvYnUvcHJvZmlsZXMvdG11eCIgPiB+Ly50bXV4LmNvbmYKICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBsZWdhY3kganVqdS90bXV4IGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgICAgIGNhdCA+IH4vLnRtdXguY29uZiA8PEVORAogICAgICAgICAgICAgICAgCiMgU3RhdHVzIGJhcgpzZXQtb3B0aW9uIC1nIHN0YXR1cy1iZyBibGFjawpzZXQtb3B0aW9uIC1nIHN0YXR1cy1mZyB3aGl0ZQoKc2V0LXdpbmRvdy1vcHRpb24gLWcgd2luZG93LXN0YXR1cy1jdXJyZW50LWJnIHJlZApzZXQtd2luZG93LW9wdGlvbiAtZyB3aW5kb3ctc3RhdHVzLWN1cnJlbnQtYXR0ciBicmlnaHQKCnNldC1vcHRpb24gLWcgc3RhdHVzLXJpZ2h0ICcnCgojIFBhbmVzCnNldC1vcHRpb24gLWcgcGFuZS1ib3JkZXItZmcgd2hpdGUKc2V0LW9wdGlvbiAtZyBwYW5lLWFjdGl2ZS1ib3JkZXItZmcgd2hpdGUKCiMgTW9uaXRvciBhY3Rpdml0eSBvbiB3aW5kb3dzCnNldC13aW5kb3ctb3B0aW9uIC1nIG1vbml0b3ItYWN0aXZpdHkgb24KCiMgU2NyZWVuIGJpbmRpbmdzLCBzaW5jZSBwZW9wbGUgYXJlIG1vcmUgZmFtaWxpYXIgd2l0aCB0aGF0LgpzZXQtb3B0aW9uIC1nIHByZWZpeCBDLWEKYmluZCBDLWEgbGFzdC13aW5kb3cKYmluZCBhIHNlbmQta2V5IEMtYQoKYmluZCB8IHNwbGl0LXdpbmRvdyAtaApiaW5kIC0gc3BsaXQtd2luZG93IC12CgojIEZpeCBDVFJMLVBHVVAvUEdET1dOIGZvciB2aW0Kc2V0LXdpbmRvdy1vcHRpb24gLWcgeHRlcm0ta2V5cyBvbgoKIyBQcmV2ZW50IEVTQyBrZXkgZnJvbSBhZGRpbmcgZGVsYXkgYW5kIGJyZWFraW5nIFZpbSdzIEVTQyA+IGFycm93IGtleQpzZXQtb3B0aW9uIC1zIGVzY2FwZS10aW1lIDAKCkVORAogICAgICAgIGZpCmZpCgooCiAgICAjIENsb3NlIHRoZSBpbmhlcml0ZWQgbG9jayBGRCwgb3IgdG11eCB3aWxsIGtlZXAgaXQgb3Blbi4KICAgIGV4ZWMgOT4mLQogICAgZXhlYyB0bXV4IG5ldy1zZXNzaW9uIC1zIG1vbmdvZGIvMQopCikgOT4vdG1wL2p1anUtdW5pdC1tb25nb2RiLTEtZGVidWctaG9va3MtZXhpdAopIDg+L3RtcC9qdWp1LXVuaXQtbW9uZ29kYi0xLWRlYnVnLWhvb2tzCmV4aXQgJD8K | base64 -d > $F; . $F'\n"), |
39 | +}, { |
40 | + args: []string{"mysql/0"}, |
41 | + proxy: true, |
42 | + result: regexp.QuoteMeta(debugHooksArgs + "ubuntu@dummyenv-0.internal sudo /bin/bash -c 'F=$(mktemp); echo IyEvYmluL2Jhc2gKKAojIExvY2sgdGhlIGp1anUtPHVuaXQ+LWRlYnVnIGxvY2tmaWxlLgpmbG9jayAtbiA4IHx8IChlY2hvICJGYWlsZWQgdG8gYWNxdWlyZSAvdG1wL2p1anUtdW5pdC1teXNxbC0wLWRlYnVnLWhvb2tzOiB1bml0IGlzIGFscmVhZHkgYmVpbmcgZGVidWdnZWQiIDI+JjE7IGV4aXQgMSkKKAojIENsb3NlIHRoZSBpbmhlcml0ZWQgbG9jayBGRCwgb3IgdG11eCB3aWxsIGtlZXAgaXQgb3Blbi4KZXhlYyA4PiYtCgojIFdyaXRlIG91dCB0aGUgZGVidWctaG9va3MgYXJncy4KZWNobyAiZTMwSyIgfCBiYXNlNjQgLWQgPiAvdG1wL2p1anUtdW5pdC1teXNxbC0wLWRlYnVnLWhvb2tzCgojIExvY2sgdGhlIGp1anUtPHVuaXQ+LWRlYnVnLWV4aXQgbG9ja2ZpbGUuCmZsb2NrIC1uIDkgfHwgZXhpdCAxCgojIFdhaXQgZm9yIHRtdXggdG8gYmUgaW5zdGFsbGVkLgp3aGlsZSBbICEgLWYgL3Vzci9iaW4vdG11eCBdOyBkbwogICAgc2xlZXAgMQpkb25lCgppZiBbICEgLWYgfi8udG11eC5jb25mIF07IHRoZW4KICAgICAgICBpZiBbIC1mIC91c3Ivc2hhcmUvYnlvYnUvcHJvZmlsZXMvdG11eCBdOyB0aGVuCiAgICAgICAgICAgICAgICAjIFVzZSBieW9idS90bXV4IHByb2ZpbGUgZm9yIGZhbWlsaWFyIGtleWJpbmRpbmdzIGFuZCBicmFuZGluZwogICAgICAgICAgICAgICAgZWNobyAic291cmNlLWZpbGUgL3Vzci9zaGFyZS9ieW9idS9wcm9maWxlcy90bXV4IiA+IH4vLnRtdXguY29uZgogICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGxlZ2FjeSBqdWp1L3RtdXggY29uZmlndXJhdGlvbgogICAgICAgICAgICAgICAgY2F0ID4gfi8udG11eC5jb25mIDw8RU5ECiAgICAgICAgICAgICAgICAKIyBTdGF0dXMgYmFyCnNldC1vcHRpb24gLWcgc3RhdHVzLWJnIGJsYWNrCnNldC1vcHRpb24gLWcgc3RhdHVzLWZnIHdoaXRlCgpzZXQtd2luZG93LW9wdGlvbiAtZyB3aW5kb3ctc3RhdHVzLWN1cnJlbnQtYmcgcmVkCnNldC13aW5kb3ctb3B0aW9uIC1nIHdpbmRvdy1zdGF0dXMtY3VycmVudC1hdHRyIGJyaWdodAoKc2V0LW9wdGlvbiAtZyBzdGF0dXMtcmlnaHQgJycKCiMgUGFuZXMKc2V0LW9wdGlvbiAtZyBwYW5lLWJvcmRlci1mZyB3aGl0ZQpzZXQtb3B0aW9uIC1nIHBhbmUtYWN0aXZlLWJvcmRlci1mZyB3aGl0ZQoKIyBNb25pdG9yIGFjdGl2aXR5IG9uIHdpbmRvd3MKc2V0LXdpbmRvdy1vcHRpb24gLWcgbW9uaXRvci1hY3Rpdml0eSBvbgoKIyBTY3JlZW4gYmluZGluZ3MsIHNpbmNlIHBlb3BsZSBhcmUgbW9yZSBmYW1pbGlhciB3aXRoIHRoYXQuCnNldC1vcHRpb24gLWcgcHJlZml4IEMtYQpiaW5kIEMtYSBsYXN0LXdpbmRvdwpiaW5kIGEgc2VuZC1rZXkgQy1hCgpiaW5kIHwgc3BsaXQtd2luZG93IC1oCmJpbmQgLSBzcGxpdC13aW5kb3cgLXYKCiMgRml4IENUUkwtUEdVUC9QR0RPV04gZm9yIHZpbQpzZXQtd2luZG93LW9wdGlvbiAtZyB4dGVybS1rZXlzIG9uCgojIFByZXZlbnQgRVNDIGtleSBmcm9tIGFkZGluZyBkZWxheSBhbmQgYnJlYWtpbmcgVmltJ3MgRVNDID4gYXJyb3cga2V5CnNldC1vcHRpb24gLXMgZXNjYXBlLXRpbWUgMAoKRU5ECiAgICAgICAgZmkKZmkKCigKICAgICMgQ2xvc2UgdGhlIGluaGVyaXRlZCBsb2NrIEZELCBvciB0bXV4IHdpbGwga2VlcCBpdCBvcGVuLgogICAgZXhlYyA5PiYtCiAgICBleGVjIHRtdXggbmV3LXNlc3Npb24gLXMgbXlzcWwvMAopCikgOT4vdG1wL2p1anUtdW5pdC1teXNxbC0wLWRlYnVnLWhvb2tzLWV4aXQKKSA4Pi90bXAvanVqdS11bml0LW15c3FsLTAtZGVidWctaG9va3MKZXhpdCAkPwo= | base64 -d > $F; . $F'\n"), |
43 | }, { |
44 | info: `"*" is a valid hook name: it means hook everything`, |
45 | args: []string{"mysql/0", "*"}, |
46 | @@ -50,20 +53,17 @@ |
47 | args: []string{"mysql/0", "juju-info-relation-joined"}, |
48 | result: ".*\n", |
49 | }, { |
50 | - info: `invalid unit syntax`, |
51 | - args: []string{"mysql"}, |
52 | - code: 2, |
53 | - stderr: `error: "mysql" is not a valid unit name` + "\n", |
54 | -}, { |
55 | - info: `invalid unit`, |
56 | - args: []string{"nonexistent/123"}, |
57 | - code: 1, |
58 | - stderr: `error: unit "nonexistent/123" not found` + "\n", |
59 | -}, { |
60 | - info: `invalid hook`, |
61 | - args: []string{"mysql/0", "invalid-hook"}, |
62 | - code: 1, |
63 | - stderr: `error: unit "mysql/0" does not contain hook "invalid-hook"` + "\n", |
64 | + info: `invalid unit syntax`, |
65 | + args: []string{"mysql"}, |
66 | + error: `"mysql" is not a valid unit name`, |
67 | +}, { |
68 | + info: `invalid unit`, |
69 | + args: []string{"nonexistent/123"}, |
70 | + error: `unit "nonexistent/123" not found`, |
71 | +}, { |
72 | + info: `invalid hook`, |
73 | + args: []string{"mysql/0", "invalid-hook"}, |
74 | + error: `unit "mysql/0" does not contain hook "invalid-hook"`, |
75 | }} |
76 | |
77 | func (s *DebugHooksSuite) TestDebugHooksCommand(c *gc.C) { |
78 | @@ -79,9 +79,17 @@ |
79 | for i, t := range debugHooksTests { |
80 | c.Logf("test %d: %s\n\t%s\n", i, t.info, t.args) |
81 | ctx := coretesting.Context(c) |
82 | - code := cmd.Main(&DebugHooksCommand{}, ctx, t.args) |
83 | - c.Check(code, gc.Equals, t.code) |
84 | - c.Check(ctx.Stderr.(*bytes.Buffer).String(), gc.Matches, t.stderr) |
85 | - c.Check(ctx.Stdout.(*bytes.Buffer).String(), gc.Matches, t.result) |
86 | + |
87 | + debugHooksCmd := &DebugHooksCommand{} |
88 | + debugHooksCmd.proxy = true |
89 | + err := debugHooksCmd.Init(t.args) |
90 | + if err == nil { |
91 | + err = debugHooksCmd.Run(ctx) |
92 | + } |
93 | + if t.error != "" { |
94 | + c.Assert(err, gc.ErrorMatches, t.error) |
95 | + } else { |
96 | + c.Assert(err, gc.IsNil) |
97 | + } |
98 | } |
99 | } |
100 | |
101 | === modified file 'cmd/juju/scp.go' |
102 | --- cmd/juju/scp.go 2014-04-12 05:53:58 +0000 |
103 | +++ cmd/juju/scp.go 2014-05-09 07:43:16 +0000 |
104 | @@ -102,19 +102,14 @@ |
105 | return err |
106 | } |
107 | defer c.apiClient.Close() |
108 | + |
109 | + options, err := c.getSSHOptions(false) |
110 | + if err != nil { |
111 | + return err |
112 | + } |
113 | args, err := expandArgs(c.Args, c.hostFromTarget) |
114 | if err != nil { |
115 | return err |
116 | } |
117 | - |
118 | - var options *ssh.Options |
119 | - if proxy, err := c.proxySSH(); err != nil { |
120 | - return err |
121 | - } else if proxy { |
122 | - options = new(ssh.Options) |
123 | - if err := c.setProxyCommand(options); err != nil { |
124 | - return err |
125 | - } |
126 | - } |
127 | return ssh.Copy(args, options) |
128 | } |
129 | |
130 | === modified file 'cmd/juju/scp_test.go' |
131 | --- cmd/juju/scp_test.go 2014-04-12 05:53:58 +0000 |
132 | +++ cmd/juju/scp_test.go 2014-05-09 07:43:16 +0000 |
133 | @@ -78,7 +78,7 @@ |
134 | }, { |
135 | about: "scp from machine 0 to unit mysql/0 with proxy", |
136 | args: []string{"0:foo", "mysql/0:/foo"}, |
137 | - result: commonArgs + "ubuntu@dummyenv-0.dns:foo ubuntu@dummyenv-0.dns:/foo\n", |
138 | + result: commonArgs + "ubuntu@dummyenv-0.internal:foo ubuntu@dummyenv-0.internal:/foo\n", |
139 | proxy: true, |
140 | }, { |
141 | args: []string{"0:foo", ".", "-rv", "-o", "SomeOption"}, |
142 | @@ -188,7 +188,15 @@ |
143 | c.Check(strings.HasSuffix(argString, "\n"), jc.IsTrue) |
144 | argString = argString[:len(argString)-1] |
145 | args := strings.Split(argString, " ") |
146 | - expanded, err := expandArgs(t.args, dummyHostsFromTarget) |
147 | + expanded, err := expandArgs(t.args, func(target string) (string, error) { |
148 | + if res, ok := hostsFromTargets[target]; ok { |
149 | + if t.proxy { |
150 | + res = strings.Replace(res, ".dns", ".internal", 1) |
151 | + } |
152 | + return res, nil |
153 | + } |
154 | + return target, nil |
155 | + }) |
156 | c.Check(err, gc.IsNil) |
157 | c.Check(expanded, gc.DeepEquals, args) |
158 | } |
159 | |
160 | === modified file 'cmd/juju/ssh.go' |
161 | --- cmd/juju/ssh.go 2014-04-02 06:15:57 +0000 |
162 | +++ cmd/juju/ssh.go 2014-05-09 07:43:16 +0000 |
163 | @@ -111,6 +111,23 @@ |
164 | return exec.LookPath(os.Args[0]) |
165 | } |
166 | |
167 | +// getSSHOptions configures and returns SSH options and proxy settings. |
168 | +func (c *SSHCommon) getSSHOptions(enablePty bool) (*ssh.Options, error) { |
169 | + var options ssh.Options |
170 | + if enablePty { |
171 | + options.EnablePTY() |
172 | + } |
173 | + var err error |
174 | + if c.proxy, err = c.proxySSH(); err != nil { |
175 | + return nil, err |
176 | + } else if c.proxy { |
177 | + if err := c.setProxyCommand(&options); err != nil { |
178 | + return nil, err |
179 | + } |
180 | + } |
181 | + return &options, nil |
182 | +} |
183 | + |
184 | // Run resolves c.Target to a machine, to the address of a i |
185 | // machine or unit forks ssh passing any arguments provided. |
186 | func (c *SSHCommand) Run(ctx *cmd.Context) error { |
187 | @@ -124,22 +141,15 @@ |
188 | } |
189 | }() |
190 | } |
191 | + options, err := c.getSSHOptions(c.pty) |
192 | + if err != nil { |
193 | + return err |
194 | + } |
195 | host, err := c.hostFromTarget(c.Target) |
196 | if err != nil { |
197 | return err |
198 | } |
199 | - var options ssh.Options |
200 | - if c.pty { |
201 | - options.EnablePTY() |
202 | - } |
203 | - if proxy, err := c.proxySSH(); err != nil { |
204 | - return err |
205 | - } else if proxy { |
206 | - if err := c.setProxyCommand(&options); err != nil { |
207 | - return err |
208 | - } |
209 | - } |
210 | - cmd := ssh.Command("ubuntu@"+host, c.Args, &options) |
211 | + cmd := ssh.Command("ubuntu@"+host, c.Args, options) |
212 | cmd.Stdin = ctx.Stdin |
213 | cmd.Stdout = ctx.Stdout |
214 | cmd.Stderr = ctx.Stderr |
215 | |
216 | === modified file 'cmd/juju/ssh_test.go' |
217 | --- cmd/juju/ssh_test.go 2014-04-07 00:36:36 +0000 |
218 | +++ cmd/juju/ssh_test.go 2014-05-09 07:43:16 +0000 |
219 | @@ -68,22 +68,22 @@ |
220 | { |
221 | "connect to machine 0", |
222 | []string{"ssh", "0"}, |
223 | - sshArgs + "ubuntu@dummyenv-0.dns\n", |
224 | + sshArgs + "ubuntu@dummyenv-0.internal\n", |
225 | }, |
226 | { |
227 | "connect to machine 0 and pass extra arguments", |
228 | []string{"ssh", "0", "uname", "-a"}, |
229 | - sshArgs + "ubuntu@dummyenv-0.dns uname -a\n", |
230 | + sshArgs + "ubuntu@dummyenv-0.internal uname -a\n", |
231 | }, |
232 | { |
233 | "connect to unit mysql/0", |
234 | []string{"ssh", "mysql/0"}, |
235 | - sshArgs + "ubuntu@dummyenv-0.dns\n", |
236 | + sshArgs + "ubuntu@dummyenv-0.internal\n", |
237 | }, |
238 | { |
239 | "connect to unit mongodb/1 and pass extra arguments", |
240 | []string{"ssh", "mongodb/1", "ls", "/"}, |
241 | - sshArgs + "ubuntu@dummyenv-2.dns ls /\n", |
242 | + sshArgs + "ubuntu@dummyenv-2.internal ls /\n", |
243 | }, |
244 | { |
245 | "connect to unit mysql/0 without proxy", |
246 | @@ -182,7 +182,7 @@ |
247 | attemptStarter.next = func() bool { |
248 | called++ |
249 | if called > 1 { |
250 | - s.setAddress(m[0], c) |
251 | + s.setAddresses(m[0], c) |
252 | } |
253 | return true |
254 | } |
255 | @@ -191,19 +191,20 @@ |
256 | c.Assert(called, gc.Equals, 2) |
257 | } |
258 | |
259 | -func (s *SSHCommonSuite) setAddress(m *state.Machine, c *gc.C) { |
260 | - addr := instance.NewAddress(fmt.Sprintf("dummyenv-%s.dns", m.Id()), instance.NetworkPublic) |
261 | - err := m.SetAddresses(addr) |
262 | +func (s *SSHCommonSuite) setAddresses(m *state.Machine, c *gc.C) { |
263 | + addrPub := instance.NewAddress(fmt.Sprintf("dummyenv-%s.dns", m.Id()), instance.NetworkPublic) |
264 | + addrPriv := instance.NewAddress(fmt.Sprintf("dummyenv-%s.internal", m.Id()), instance.NetworkCloudLocal) |
265 | + err := m.SetAddresses(addrPub, addrPriv) |
266 | c.Assert(err, gc.IsNil) |
267 | } |
268 | |
269 | -func (s *SSHCommonSuite) makeMachines(n int, c *gc.C, setAddress bool) []*state.Machine { |
270 | +func (s *SSHCommonSuite) makeMachines(n int, c *gc.C, setAddresses bool) []*state.Machine { |
271 | var machines = make([]*state.Machine, n) |
272 | for i := 0; i < n; i++ { |
273 | m, err := s.State.AddMachine("quantal", state.JobHostUnits) |
274 | c.Assert(err, gc.IsNil) |
275 | - if setAddress { |
276 | - s.setAddress(m, c) |
277 | + if setAddresses { |
278 | + s.setAddresses(m, c) |
279 | } |
280 | // must set an instance id as the ssh command uses that as a signal the |
281 | // machine has been provisioned |
282 | @@ -219,13 +220,4 @@ |
283 | c.Assert(err, gc.IsNil) |
284 | err = u.AssignToMachine(m) |
285 | c.Assert(err, gc.IsNil) |
286 | - // fudge unit.SetPublicAddress |
287 | - id, err := m.InstanceId() |
288 | - c.Assert(err, gc.IsNil) |
289 | - insts, err := s.Conn.Environ.Instances([]instance.Id{id}) |
290 | - c.Assert(err, gc.IsNil) |
291 | - addr, err := insts[0].WaitDNSName() |
292 | - c.Assert(err, gc.IsNil) |
293 | - err = m.SetAddresses(instance.NewAddress(addr, instance.NetworkPublic)) |
294 | - c.Assert(err, gc.IsNil) |
295 | } |
Reviewers: mp+218911_ code.launchpad. net,
Message:
Please take a look.
Description:
cmd/juju: check use-proxy before resolving address
We were translating machin/unit IDs to internal addresses
even if use-proxy=false. This manifested most prominently
when attempting to juju ssh to a machine or unit in a 1.18
environment.
Fixes lp:1313785
https:/ /code.launchpad .net/~axwalk/ juju-core/ lp1313785- ssh-useproxy/ +merge/ 218911
(do not edit description out of merge proposal)
Please review this at https:/ /codereview. appspot. com/97230043/
Affected files (+23, -19 lines): ssh_test. go
A [revision details]
M cmd/juju/scp.go
M cmd/juju/ssh.go
M cmd/juju/
Index: [revision details] 20140509022908- 5uihgtxv6350ydf q
=== added file '[revision details]'
--- [revision details] 2012-01-01 00:00:00 +0000
+++ [revision details] 2012-01-01 00:00:00 +0000
@@ -0,0 +1,2 @@
+Old revision: tarmac-
+New revision: <email address hidden>
Index: cmd/juju/scp.go
=== modified file 'cmd/juju/scp.go'
--- cmd/juju/scp.go 2014-04-12 05:53:58 +0000
+++ cmd/juju/scp.go 2014-05-09 05:17:45 +0000
@@ -102,19 +102,19 @@
return err
}
defer c.apiClient.Close()
- args, err := expandArgs(c.Args, c.hostFromTarget)
- if err != nil {
- return err
- }
var options *ssh.Options nd(options) ; err != nil {
- if proxy, err := c.proxySSH(); err != nil {
+ if c.proxy, err = c.proxySSH(); err != nil {
return err
- } else if proxy {
+ } else if c.proxy {
options = new(ssh.Options)
if err := c.setProxyComma
return err
}
}
+ args, err := expandArgs(c.Args, c.hostFromTarget)
+ if err != nil {
+ return err
+ }
return ssh.Copy(args, options)
}
Index: cmd/juju/ssh.go t(c.Target) EnablePTY( ) nd(&options) ; err != nil { t(c.Target) "ubuntu@ "+host, c.Args, &options)
=== modified file 'cmd/juju/ssh.go'
--- cmd/juju/ssh.go 2014-04-02 06:15:57 +0000
+++ cmd/juju/ssh.go 2014-05-09 05:17:45 +0000
@@ -124,21 +124,22 @@
}
}()
}
- host, err := c.hostFromTarge
- if err != nil {
- return err
- }
var options ssh.Options
if c.pty {
options.
}
- if proxy, err := c.proxySSH(); err != nil {
+ var err error
+ if c.proxy, err = c.proxySSH(); err != nil {
return err
- } else if proxy {
+ } else if c.proxy {
if err := c.setProxyComma
return err
}
}
+ host, err := c.hostFromTarge
+ if err != nil {
+ return err
+ }
cmd := ssh.Command(
cmd.Stdin = ctx.Stdin
cmd.Stdout = ctx.Stdout
Index: cmd/juju/ ssh_test. go ssh_test. go' ssh_test. go 2014-04-07 00:36:36 +0000 ssh_test. go 2014-05-09 05:17:45 +0000 er.next = func() bool { m[0], c)
=== modified file 'cmd/juju/
--- cmd/juju/
+++ cmd/juju/
@@ -182,7 +182,7 @@
attemptStart
called++
if called > 1 {
- s.setAddress(m[0], c)
+ s.setAddresses(
}
return true
}
@@ -191,19 +191,20 @@
c.Assert(called, gc.Equals, 2)
}
-func (s *SSHCommonSuite) setAddress(m *state.Machine, c *gc.C) { NewAddress( fmt.Sprintf( "dummyenv- %s.dns" , m.Id()), NetworkPublic) addr) NewAddress( fmt.Sprintf( "dummye. ..
- addr := instance.
instance.
- err := m.SetAddresses(
+func (s *SSHCommonSuite) setAddresses(m *state.Machine, c *gc.C) {
+ addrPub := instance.