__init__.py revision 290
290N/A# The contents of this file are subject to the terms of the 290N/A# Common Development and Distribution License (the "License"). 290N/A# You may not use this file except in compliance with the License. 290N/A# See the License for the specific language governing permissions 290N/A# and limitations under the License. 290N/A# When distributing Covered Code, include this CDDL HEADER in each 290N/A# If applicable, add the following below this CDDL HEADER, with the 290N/A# fields enclosed by brackets "[]" replaced with your own identifying 290N/A# information: Portions Copyright [yyyy] [name of copyright owner] 290N/A# Copyright 2008 Sun Microsystems, Inc. All rights reserved. 290N/A# Use is subject to license terms. 290N/A# The portable module provide access to methods that require operating system- 290N/A# specific implementations. The module initialization logic selects the right 290N/A# implementation the module is loaded. The module methods then 290N/A# delegate to the implementation class object. 290N/A# The documentation for the methods is provided in this module. To support 290N/A# another operating system, each of these methods must be implemented by the 290N/A# class for that operating system even if it is effectively a no-op. 290N/A# The module and class must be named using os_[impl], where 290N/A# [impl] corresponds to the OS distro, name, or type of OS 290N/A# the class implements. For example, to add specific support 290N/A# for mandrake linux (above and beyond existing support for 290N/A# The following high-level groups of methods are defined in this module: 290N/A# - Platform Attribute Methods: These methods give access to 290N/A# attributes of the underlying platform not available through 290N/A# existing python libraries. For example, the list of implemented 290N/A# ISAs of a given platform. 290N/A# - Account access: Retrieval of account information (users and 290N/A# groups), in some cases for dormant, relocated OS images. 290N/A# - Miscellaneous filesystem operations: common operations that 290N/A# differ in implementation or are only available on a subset 290N/A# of OS or filesystem implementations, such as chown() or rename(). 383N/A# This module exports the following methods 290N/A# get_isainfo() - Return the information for the OS's supported ISAs. 290N/A# This can be a list or a single string. 383N/A# get_release() - Return the information for the OS's release version. This 383N/A# must be a dot-separated set of integers (i.e. no alphabetic 383N/A# get_platform() - Return a string representing the current hardware model 383N/A# information, e.g. "i86pc". 383N/A# get_group_by_name(name, dirpath, use_file) - Return the group ID for a group name. 383N/A# If use_file is true, an OS-specific file from within the file tree 383N/A# rooted by dirpath will be consulted, if it exists. Otherwise, the 383N/A# group ID is retrieved from the operating system. 383N/A# KeyError if the specified group does not exist 290N/A# get_user_by_name(name, dirpath, use_file) - Return the user ID for a user name. 383N/A# If use_file is true, an OS-specific file from within the file tree 383N/A# rooted by dirpath will be consulted, if it exists. Otherwise, the 383N/A# user ID is retrieved from the operating system. 383N/A# KeyError if the specified group does not exist 383N/A# get_name_by_gid(gid, dirpath, use_file) - Return the group name for a group ID. 383N/A# If use_file is true, an OS-specific file from within the file tree 383N/A# rooted by dirpath will be consulted, if it exists. Otherwise, the 383N/A# group name is retrieved from the operating system. 383N/A# KeyError if the specified group does not exist 383N/A# get_name_by_uid(uid, dirpath, use_file) - Return the user name for a user ID. 383N/A# If use_file is true, an OS-specific file from within the file tree 383N/A# rooted by dirpath will be consulted, if it exists. Otherwise, the 383N/A# user name is retrieved from the operating system. 383N/A# KeyError if the specified group does not exist 383N/A# is_admin() - Return true if the invoking user has administrative 383N/A# privileges on the current runtime OS (e.g. are they the 383N/A# get_username() - Return a string representing the invoking user's username. 383N/A# Miscellaneous filesystem operations 383N/A# ----------------------------------- 383N/A# chown(path, owner, group) - Change ownership of a file in an OS-specific way. 383N/A# The owner and group ownership information should be applied to 383N/A# the given file, if applicable on the current runtime OS. 383N/A# EnvironmentError (or subclass) if the path does not exist 383N/A# or ownership cannot be changed 383N/A# rename(src, dst) - Change the name of the given file, using the most 383N/A# appropriate method for the OS. 383N/A# OSError (or subclass) if the source path does not exist 383N/A# EnvironmentError if the rename fails. 383N/A# link(src, dst) - Link the src to the dst if supported, otherwise copy 383N/A# OSError (or subclass) if the source path does not exist or the link 383N/A# copyfile(src, dst) - Copy the contents of the file named src to a file named dst. 290N/A# If dst already exists, it will be replaced. src and dst are 290N/A# path names given as strings. 383N/A# This is similar to python's shutil.copyfile() except that 383N/A# the intention is to deal with platform specifics, such as 383N/A# copying metadata associated with the file (e.g. Resource 383N/A# Exceptions: IOError if the destination location is not writable 383N/A# split_path(path) - Splits a path and gives back the components of the path. 383N/A# This is intended to hide platform-specific details about splitting 383N/A# a path into its components. This interface is similar to 383N/A# os.path.split() except that the entire path is split, not just 383N/A# For platforms where there are additional components (like 383N/A# a windows drive letter), these should be discarded before 383N/A# get_root(path) - Returns the 'root' of the given path. 383N/A# This should include any and all components of a path up to the first 383N/A# non-platform-specific component. For example, on Windows, 383N/A# it should include the drive letter prefix. 383N/A# This is intended to be used when constructing or deconstructing 383N/A# paths, where the root of the filesystem is significant (and 383N/A# often leads to ambiguity in cross-platform code). 383N/A # try the most-specific module name first (e.g. os_suse), 383N/A # then try the more generic OS Name module (e.g. os_linux), 383N/A # then the OS type module (e.g. os_unix)