there's been a lot of churn around this code, so i figure it was worth
trying to clean it up.
- the methods were doing a lot, so make them into template methods with
one helper per step
- spread out /etc/hosts regexp into a couple of helper variables for
clarity
- remove handling for broken hostname implementations (like basing all
of the checks on name.split('.')[0]), since it seems reasonable to
remove code dedicated only to handling broken boxes
- DRY up the shared code between debian/ubuntu implementations, which
clarifies the differences as well
- add unit tests around the behavior; this will help us in the future
to separate flaws in our understanding from flaws in implementation
- includes a new DummyCommunicator in tests which should be useful in
supporting additional unit testing of this kind
- manually tested this on squeeze, wheezy, precise, quantal, raring,
and saucy successfully.
handles the issue in #2333
29 lines
710 B
Ruby
29 lines
710 B
Ruby
module VagrantPlugins
|
|
module GuestUbuntu
|
|
module Cap
|
|
class ChangeHostName < VagrantPlugins::GuestDebian::Cap::ChangeHostName
|
|
def self.change_host_name(machine, name)
|
|
super
|
|
end
|
|
|
|
def refresh_hostname_service
|
|
if hardy?
|
|
# hostname.sh returns 1, so use `true` to get a 0 exitcode
|
|
sudo("/etc/init.d/hostname.sh start; true")
|
|
else
|
|
sudo("service hostname start")
|
|
end
|
|
end
|
|
|
|
def hardy?
|
|
machine.communicate.test("[ `lsb_release -c -s` = hardy ]")
|
|
end
|
|
|
|
def renew_dhcp
|
|
sudo("ifdown -a; ifup -a; ifup -a --allow=hotplug")
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|