From bd69e9f265ab725099405ce0653a16e7789c3d56 Mon Sep 17 00:00:00 2001 From: Ruggero Marchei Date: Sat, 14 Jun 2014 19:29:04 +0200 Subject: [PATCH 1/2] use different strategy for RHEL >= 7. Fixes 7763 --- system/hostname | 117 ++++++++++++++++++++++++++++++------------------ 1 file changed, 74 insertions(+), 43 deletions(-) diff --git a/system/hostname b/system/hostname index 61bdf985b99..66d8d6c8159 100644 --- a/system/hostname +++ b/system/hostname @@ -39,6 +39,22 @@ EXAMPLES = ''' - hostname: name=web01 ''' +import platform + + +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 + + class UnimplementedStrategy(object): def __init__(self, module): self.module = module @@ -135,6 +151,7 @@ class GenericStrategy(object): def set_permanent_hostname(self, name): pass + # =========================================== class DebianStrategy(GenericStrategy): @@ -173,20 +190,6 @@ class DebianStrategy(GenericStrategy): self.module.fail_json(msg="failed to update hostname: %s" % 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 +239,6 @@ class RedHatStrategy(GenericStrategy): self.module.fail_json(msg="failed to update hostname: %s" % 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 # =========================================== @@ -324,6 +298,63 @@ class ArchHostname(Hostname): distribution = 'Arch' 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(): From f5224254155338048b69aa56d8f9910c582e6f8b Mon Sep 17 00:00:00 2001 From: Ruggero Marchei Date: Mon, 16 Jun 2014 15:06:50 +0200 Subject: [PATCH 2/2] move get_distribution_version() to basic.py --- system/hostname | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) mode change 100644 => 100755 system/hostname diff --git a/system/hostname b/system/hostname old mode 100644 new mode 100755 index 66d8d6c8159..775b47a1ff9 --- a/system/hostname +++ b/system/hostname @@ -39,20 +39,8 @@ EXAMPLES = ''' - hostname: name=web01 ''' -import platform - - -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 +# import module snippets +from ansible.module_utils.basic import * class UnimplementedStrategy(object): @@ -283,6 +271,9 @@ class FedoraStrategy(GenericStrategy): self.module.fail_json(msg="Command failed rc=%d, out=%s, err=%s" % (rc, out, err)) + +# =========================================== + class FedoraHostname(Hostname): platform = 'Linux' distribution = 'Fedora' @@ -380,6 +371,4 @@ def main(): module.exit_json(changed=changed, name=name) -# import module snippets -from ansible.module_utils.basic import * main()