Merge branch 'rmarchei-7763' into devel

pull/6977/merge
James Cammarata 11 years ago
commit 7a8264a071

@ -129,6 +129,8 @@ def get_distribution():
if platform.system() == 'Linux': if platform.system() == 'Linux':
try: try:
distribution = platform.linux_distribution()[0].capitalize() distribution = platform.linux_distribution()[0].capitalize()
if " " in distribution:
distribution = distribution.split()[0]
if not distribution and os.path.isfile('/etc/system-release'): if not distribution and os.path.isfile('/etc/system-release'):
distribution = platform.linux_distribution(supported_dists=['system'])[0].capitalize() distribution = platform.linux_distribution(supported_dists=['system'])[0].capitalize()
if 'Amazon' in distribution: if 'Amazon' in distribution:
@ -142,6 +144,18 @@ def get_distribution():
distribution = None distribution = None
return distribution return distribution
def get_distribution_version():
''' return the distribution version '''
if platform.system() == 'Linux':
try:
distribution_version = platform.linux_distribution()[1]
except:
# FIXME: MethodMissing, I assume?
distribution_version = platform.dist()[1]
else:
distribution_version = None
return distribution_version
def load_platform_subclass(cls, *args, **kwargs): def load_platform_subclass(cls, *args, **kwargs):
''' '''
used by modules like User to have different implementations based on detected platform. See User used by modules like User to have different implementations based on detected platform. See User

@ -39,6 +39,10 @@ EXAMPLES = '''
- hostname: name=web01 - hostname: name=web01
''' '''
# import module snippets
from ansible.module_utils.basic import *
class UnimplementedStrategy(object): class UnimplementedStrategy(object):
def __init__(self, module): def __init__(self, module):
self.module = module self.module = module
@ -135,6 +139,7 @@ class GenericStrategy(object):
def set_permanent_hostname(self, name): def set_permanent_hostname(self, name):
pass pass
# =========================================== # ===========================================
class DebianStrategy(GenericStrategy): class DebianStrategy(GenericStrategy):
@ -173,20 +178,6 @@ class DebianStrategy(GenericStrategy):
self.module.fail_json(msg="failed to update hostname: %s" % self.module.fail_json(msg="failed to update hostname: %s" %
str(err)) str(err))
class DebianHostname(Hostname):
platform = 'Linux'
distribution = 'Debian'
strategy_class = DebianStrategy
class UbuntuHostname(Hostname):
platform = 'Linux'
distribution = 'Ubuntu'
strategy_class = DebianStrategy
class LinaroHostname(Hostname):
platform = 'Linux'
distribution = 'Linaro'
strategy_class = DebianStrategy
# =========================================== # ===========================================
@ -236,35 +227,6 @@ class RedHatStrategy(GenericStrategy):
self.module.fail_json(msg="failed to update hostname: %s" % self.module.fail_json(msg="failed to update hostname: %s" %
str(err)) str(err))
class RedHat5Hostname(Hostname):
platform = 'Linux'
distribution = 'Redhat'
strategy_class = RedHatStrategy
class RedHatServerHostname(Hostname):
platform = 'Linux'
distribution = 'Red hat enterprise linux server'
strategy_class = RedHatStrategy
class RedHatWorkstationHostname(Hostname):
platform = 'Linux'
distribution = 'Red hat enterprise linux workstation'
strategy_class = RedHatStrategy
class CentOSHostname(Hostname):
platform = 'Linux'
distribution = 'Centos'
strategy_class = RedHatStrategy
class AmazonLinuxHostname(Hostname):
platform = 'Linux'
distribution = 'Amazon'
strategy_class = RedHatStrategy
class ScientificLinuxHostname(Hostname):
platform = 'Linux'
distribution = 'Scientific'
strategy_class = RedHatStrategy
# =========================================== # ===========================================
@ -309,6 +271,9 @@ class FedoraStrategy(GenericStrategy):
self.module.fail_json(msg="Command failed rc=%d, out=%s, err=%s" % self.module.fail_json(msg="Command failed rc=%d, out=%s, err=%s" %
(rc, out, err)) (rc, out, err))
# ===========================================
class FedoraHostname(Hostname): class FedoraHostname(Hostname):
platform = 'Linux' platform = 'Linux'
distribution = 'Fedora' distribution = 'Fedora'
@ -324,6 +289,63 @@ class ArchHostname(Hostname):
distribution = 'Arch' distribution = 'Arch'
strategy_class = FedoraStrategy strategy_class = FedoraStrategy
class RedHat5Hostname(Hostname):
platform = 'Linux'
distribution = 'Redhat'
strategy_class = RedHatStrategy
class RedHatServerHostname(Hostname):
platform = 'Linux'
distribution = 'Red hat enterprise linux server'
if float(get_distribution_version()) >= 7:
strategy_class = FedoraStrategy
else:
strategy_class = RedHatStrategy
class RedHatWorkstationHostname(Hostname):
platform = 'Linux'
distribution = 'Red hat enterprise linux workstation'
if float(get_distribution_version()) >= 7:
strategy_class = FedoraStrategy
else:
strategy_class = RedHatStrategy
class CentOSHostname(Hostname):
platform = 'Linux'
distribution = 'Centos'
if float(get_distribution_version()) >= 7:
strategy_class = FedoraStrategy
else:
strategy_class = RedHatStrategy
class ScientificLinuxHostname(Hostname):
platform = 'Linux'
distribution = 'Scientific'
if float(get_distribution_version()) >= 7:
strategy_class = FedoraStrategy
else:
strategy_class = RedHatStrategy
class AmazonLinuxHostname(Hostname):
platform = 'Linux'
distribution = 'Amazon'
strategy_class = RedHatStrategy
class DebianHostname(Hostname):
platform = 'Linux'
distribution = 'Debian'
strategy_class = DebianStrategy
class UbuntuHostname(Hostname):
platform = 'Linux'
distribution = 'Ubuntu'
strategy_class = DebianStrategy
class LinaroHostname(Hostname):
platform = 'Linux'
distribution = 'Linaro'
strategy_class = DebianStrategy
# =========================================== # ===========================================
def main(): def main():
@ -349,6 +371,4 @@ def main():
module.exit_json(changed=changed, name=name) module.exit_json(changed=changed, name=name)
# import module snippets
from ansible.module_utils.basic import *
main() main()

Loading…
Cancel
Save