vaguerent/plugins/guests/ubuntu/cap/change_host_name.rb
phinze 688bca14f5 refactoring ubuntu/debian change_host_name
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
2013-11-24 11:46:12 -06:00

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