summaryrefslogtreecommitdiffstats
path: root/ipapython/platform/base.py
diff options
context:
space:
mode:
authorTimo Aaltonen <tjaalton@ubuntu.com>2012-12-05 14:58:06 +0200
committerMartin Kosek <mkosek@redhat.com>2013-01-14 14:39:54 +0100
commited849639272acf0aed44935591ba525ec1348d59 (patch)
treedce45b15575c4c9561a260a898d358575b45c610 /ipapython/platform/base.py
parent38dded7db6529be096b92c9d63182a980e0b3a93 (diff)
convert the base platform modules into packages
Diffstat (limited to 'ipapython/platform/base.py')
-rw-r--r--ipapython/platform/base.py226
1 files changed, 0 insertions, 226 deletions
diff --git a/ipapython/platform/base.py b/ipapython/platform/base.py
deleted file mode 100644
index e2aa33fa..00000000
--- a/ipapython/platform/base.py
+++ /dev/null
@@ -1,226 +0,0 @@
-# Authors: Alexander Bokovoy <abokovoy@redhat.com>
-#
-# Copyright (C) 2011 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/>.
-
-from ipalib.plugable import MagicDict
-import json
-import os
-
-# Canonical names of services as IPA wants to see them. As we need to have
-# *some* naming, set them as in Red Hat distributions. Actual implementation
-# should make them available through knownservices.<name> and take care of
-# re-mapping internally, if needed
-wellknownservices = ['certmonger', 'dirsrv', 'httpd', 'ipa', 'krb5kdc',
- 'messagebus', 'nslcd', 'nscd', 'ntpd', 'portmap',
- 'rpcbind', 'kadmin', 'sshd', 'autofs', 'rpcgssd',
- 'rpcidmapd', 'pki_tomcatd', 'pki-cad', 'chronyd']
-
-# System may support more time&date services. FreeIPA supports ntpd only, other
-# services will be disabled during IPA installation
-timedate_services = ['ntpd', 'chronyd']
-
-
-# The common ports for these services. This is used to wait for the
-# service to become available.
-wellknownports = {
- 'dirsrv@PKI-IPA.service': [7389],
- 'PKI-IPA': [7389],
- 'dirsrv': [389], # this is only used if the incoming instance name is blank
- 'pki-cad': [9180, 9443, 9444],
- 'pki-tomcatd@pki-tomcat.service': [8080, 8443],
- 'pki-tomcat': [8080, 8443],
- 'pki-tomcatd': [8080, 8443], # used if the incoming instance name is blank
-}
-
-SVC_LIST_FILE = "/var/run/ipa/services.list"
-
-class AuthConfig(object):
- """
- AuthConfig class implements system-independent interface to configure
- system authentication resources. In Red Hat systems this is done with
- authconfig(8) utility.
-
- AuthConfig class is nothing more than a tool to gather configuration
- options and execute their processing. These options then converted by
- an actual implementation to series of a system calls to appropriate
- utilities performing real configuration.
-
- IPA *expects* names of AuthConfig's options to follow authconfig(8)
- naming scheme!
-
- Actual implementation should be done in ipapython/platform/<platform>.py
- by inheriting from platform.AuthConfig and redefining __build_args()
- and execute() methods.
-
- from ipapython.platform import platform
- class PlatformAuthConfig(platform.AuthConfig):
- def __build_args():
- ...
-
- def execute():
- ...
-
- authconfig = PlatformAuthConfig
- ....
-
- See ipapython/platform/redhat.py for a sample implementation that uses
- authconfig(8) as its backend.
-
- From IPA code perspective, the authentication configuration should be
- done with use of ipapython.services.authconfig:
-
- from ipapython import services as ipaservices
- auth_config = ipaservices.authconfig()
- auth_config.disable("ldap").\
- disable("krb5").\
- disable("sssd").\
- disable("sssdauth").\
- disable("mkhomedir").\
- add_option("update").\
- enable("nis").\
- add_parameter("nisdomain","foobar")
- auth_config.execute()
-
- If you need to re-use existing AuthConfig instance for multiple runs,
- make sure to call 'AuthConfig.reset()' between the runs.
- """
-
- def __init__(self):
- self.parameters = {}
-
- def enable(self, option):
- self.parameters[option] = True
- return self
-
- def disable(self, option):
- self.parameters[option] = False
- return self
-
- def add_option(self, option):
- self.parameters[option] = None
- return self
-
- def add_parameter(self, option, value):
- self.parameters[option] = [value]
- return self
-
- def __build_args(self):
- # do nothing
- return None
-
- def execute(self):
- # do nothing
- return None
-
- def reset(self):
- self.parameters = {}
- return self
-
-class PlatformService(object):
- """
- PlatformService abstracts out external process running on the system
- which is possible to administer (start, stop, check status, etc).
-
- """
-
- def __init__(self, service_name):
- self.service_name = service_name
-
- def start(self, instance_name="", capture_output=True, wait=True,
- update_service_list=True):
- """
- When a service is started record the fact in a special file.
- This allows ipactl stop to always stop all services that have
- been started via ipa tools
- """
- if not update_service_list:
- return
- svc_list = []
- try:
- f = open(SVC_LIST_FILE, 'r')
- svc_list = json.load(f)
- except Exception:
- # not fatal, may be the first service
- pass
-
- if self.service_name not in svc_list:
- svc_list.append(self.service_name)
-
- f = open(SVC_LIST_FILE, 'w')
- json.dump(svc_list, f)
- f.flush()
- f.close()
- return
-
- def stop(self, instance_name="", capture_output=True, update_service_list=True):
- """
- When a service is stopped remove it from the service list file.
- """
- if not update_service_list:
- return
- svc_list = []
- try:
- f = open(SVC_LIST_FILE, 'r')
- svc_list = json.load(f)
- except Exception:
- # not fatal, may be the first service
- pass
-
- while self.service_name in svc_list:
- svc_list.remove(self.service_name)
-
- f = open(SVC_LIST_FILE, 'w')
- json.dump(svc_list, f)
- f.flush()
- f.close()
- return
-
- def restart(self, instance_name="", capture_output=True, wait=True):
- return
-
- def is_running(self, instance_name=""):
- return False
-
- def is_installed(self):
- return False
-
- def is_enabled(self, instance_name=""):
- return False
-
- def enable(self, instance_name=""):
- return
-
- def disable(self, instance_name=""):
- return
-
- def install(self, instance_name=""):
- return
-
- def remove(self, instance_name=""):
- return
-
- def get_config_dir(self, instance_name=""):
- return
-
-class KnownServices(MagicDict):
- """
- KnownServices is an abstract class factory that should give out instances
- of well-known platform services. Actual implementation must create these
- instances as its own attributes on first access (or instance creation)
- and cache them.
- """
-