summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJan Cholasta <jcholast@redhat.com>2014-10-03 11:23:18 +0200
committerMartin Kosek <mkosek@redhat.com>2014-10-09 15:33:23 +0200
commitdd9c3c744d33a2d662177e2cee2dac2134fafe5a (patch)
tree66b71884b1c4a63ec969c85195aad6c19e86a7eb
parent748682771670522cc8b0e2db7b1251ead5fecde0 (diff)
downloadfreeipa-dd9c3c744d33a2d662177e2cee2dac2134fafe5a.tar.gz
freeipa-dd9c3c744d33a2d662177e2cee2dac2134fafe5a.tar.xz
freeipa-dd9c3c744d33a2d662177e2cee2dac2134fafe5a.zip
Add RHEL platform module
https://fedorahosted.org/freeipa/ticket/4562 Reviewed-By: Martin Kosek <mkosek@redhat.com>
-rw-r--r--ipaplatform/rhel/__init__.py22
-rw-r--r--ipaplatform/rhel/paths.py33
-rw-r--r--ipaplatform/rhel/services.py61
-rw-r--r--ipaplatform/rhel/tasks.py31
-rw-r--r--ipaplatform/setup.py.in3
5 files changed, 149 insertions, 1 deletions
diff --git a/ipaplatform/rhel/__init__.py b/ipaplatform/rhel/__init__.py
new file mode 100644
index 000000000..f94f06d22
--- /dev/null
+++ b/ipaplatform/rhel/__init__.py
@@ -0,0 +1,22 @@
+# Authors:
+# Jan Cholasta <jcholast@redhat.com>
+#
+# Copyright (C) 2014 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+'''
+This module contains RHEL-specific platform files.
+'''
diff --git a/ipaplatform/rhel/paths.py b/ipaplatform/rhel/paths.py
new file mode 100644
index 000000000..4f3925f35
--- /dev/null
+++ b/ipaplatform/rhel/paths.py
@@ -0,0 +1,33 @@
+# Authors:
+# Jan Cholasta <jcholast@redhat.com>
+#
+# Copyright (C) 2014 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+'''
+This RHEL base platform module exports default filesystem paths as common
+in RHEL-based systems.
+'''
+
+# Fallback to default path definitions
+from ipaplatform.redhat.paths import RedHatPathNamespace
+
+
+class RHELPathNamespace(RedHatPathNamespace):
+ pass
+
+
+paths = RHELPathNamespace()
diff --git a/ipaplatform/rhel/services.py b/ipaplatform/rhel/services.py
new file mode 100644
index 000000000..861738eb2
--- /dev/null
+++ b/ipaplatform/rhel/services.py
@@ -0,0 +1,61 @@
+# Authors:
+# Jan Cholasta <jcholast@redhat.com>
+#
+# Copyright (C) 2014 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+
+"""
+Contains RHEL-specific service class implementations.
+"""
+
+from ipaplatform.redhat import services as redhat_services
+
+# Mappings from service names as FreeIPA code references to these services
+# to their actual systemd service names
+rhel_system_units = redhat_services.redhat_system_units
+
+# Service that sets domainname on RHEL is called rhel-domainname.service
+rhel_system_units['domainname'] = 'rhel-domainname.service'
+
+
+# Service classes that implement RHEL-specific behaviour
+
+class RHELService(redhat_services.RedHatService):
+ system_units = rhel_system_units
+
+
+# Function that constructs proper RHEL-specific server classes for services
+# of specified name
+
+def rhel_service_class_factory(name):
+ if name == 'domainname':
+ return RHELService(name)
+ return redhat_services.redhat_service_class_factory(name)
+
+
+# Magicdict containing RHELService instances.
+
+class RHELServices(redhat_services.RedHatServices):
+ def service_class_factory(self, name):
+ return rhel_service_class_factory(name)
+
+
+# Objects below are expected to be exported by platform module
+
+from ipaplatform.redhat.services import timedate_services
+service = rhel_service_class_factory
+knownservices = RHELServices()
diff --git a/ipaplatform/rhel/tasks.py b/ipaplatform/rhel/tasks.py
new file mode 100644
index 000000000..751580665
--- /dev/null
+++ b/ipaplatform/rhel/tasks.py
@@ -0,0 +1,31 @@
+# Authors:
+# Jan Cholasta <jcholast@redhat.com>
+#
+# Copyright (C) 2014 Red Hat
+# see file 'COPYING' for use and warranty information
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+'''
+This module contains default RHEL-specific implementations of system tasks.
+'''
+
+from ipaplatform.redhat.tasks import RedHatTaskNamespace
+
+
+class RHELTaskNamespace(RedHatTaskNamespace):
+ pass
+
+
+tasks = RHELTaskNamespace()
diff --git a/ipaplatform/setup.py.in b/ipaplatform/setup.py.in
index 0ba5822f9..944e68699 100644
--- a/ipaplatform/setup.py.in
+++ b/ipaplatform/setup.py.in
@@ -68,7 +68,8 @@ def setup_package():
packages = ["ipaplatform",
"ipaplatform.base",
"ipaplatform.fedora",
- "ipaplatform.redhat"],
+ "ipaplatform.redhat",
+ "ipaplatform.rhel"],
)
finally:
del sys.path[0]