[node-patches] Change in ovirt-node[master]: Drop augeas.py

fabiand at redhat.com fabiand at redhat.com
Thu Jul 9 14:11:36 UTC 2015


Fabian Deutsch has uploaded a new change for review.

Change subject: Drop augeas.py
......................................................................

Drop augeas.py

Change-Id: I7ee8f77d92e78e6e6a614542260aaa74d56145bc
Signed-off-by: Fabian Deutsch <fabiand at fedoraproject.org>
---
M scripts/Makefile.am
D scripts/augeas.py
2 files changed, 0 insertions(+), 599 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/91/43391/1

diff --git a/scripts/Makefile.am b/scripts/Makefile.am
index 9facb20..39355a3 100644
--- a/scripts/Makefile.am
+++ b/scripts/Makefile.am
@@ -16,7 +16,6 @@
 # also available at http://www.gnu.org/copyleft/gpl.html.
 
 localboottriggerdir=$(sysconfdir)/ovirt-config-boot.d
-augeasdir = $(pythondir)
 
 dist_sbin_SCRIPTS = \
   persist \
@@ -42,9 +41,6 @@
 # default hook for local_boot_trigger
 dist_localboottrigger_SCRIPTS = \
   local_boot_trigger.sh
-
-augeas_PYTHON = \
-  augeas.py
 
 install-exec-hook:
 	mv $(DESTDIR)$(libexecdir)/ovirt-auto-install.py $(DESTDIR)$(libexecdir)/ovirt-auto-install
diff --git a/scripts/augeas.py b/scripts/augeas.py
deleted file mode 100644
index ca5e191..0000000
--- a/scripts/augeas.py
+++ /dev/null
@@ -1,595 +0,0 @@
-"""Pure python bindings for the augeas library
-
-Augeas is a library for programmatically editing configuration files.
-Augeas parses configuration files into a tree structure, which it exposes
-through its public API. Changes made through the API are written back to
-the initially read files.
-
-The transformation works very hard to preserve comments and formatting
-details. It is controlled by ``lens'' definitions that describe the file
-format and the transformation into a tree.
-
-"""
-
-#
-# Copyright (C) 2008 Nathaniel McCallum
-# Copyright (C) 2008 Jeff Schroeder <jeffschroeder at computer.org>
-# Copyright (C) 2009 Red Hat, Inc.
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library 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
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
-#
-# Author: Nathaniel McCallum <nathaniel at natemccallum.com>
-
-__author__ = "Nathaniel McCallum <nathaniel at natemccallum.com>"
-__credits__ = """Jeff Schroeder <jeffschroeder at computer.org>
-Harald Hoyer <harald at redhat.com> - initial python bindings, packaging
-Nils Philippsen <nils at redhat.com>
-"""
-
-import types
-import ctypes
-import ctypes.util
-from sys import version_info as _pyver
-from functools import reduce
-
-
-PY3 = _pyver >= (3,)
-AUGENC = 'utf8'
-
-
-if PY3:
-    string_types = str
-else:
-    string_types = basestring
-
-
-def enc(st):
-    if st:
-        return st.encode(AUGENC)
-
-
-def dec(st):
-    if st:
-        return st.decode(AUGENC)
-
-
-def _dlopen(*args):
-    """Search for one of the libraries given as arguments and load it.
-    Returns the library.
-    """
-    libs = [l for l in [ ctypes.util.find_library(a) for a in args ] if l]
-    lib  = reduce(lambda x, y: x or ctypes.cdll.LoadLibrary(y), libs, None)
-    if not lib:
-        raise ImportError("Unable to import lib%s!" % args[0])
-    return lib
-
-class Augeas(object):
-    "Class wrapper for the augeas library"
-
-    # Load libaugeas
-    _libaugeas = _dlopen("augeas")
-    _libaugeas.aug_init.restype = ctypes.c_void_p
-
-    # Augeas Flags
-    NONE = 0
-    SAVE_BACKUP = 1 << 0
-    SAVE_NEWFILE = 1 << 1
-    TYPE_CHECK = 1 << 2
-    NO_STDINC = 1 << 3
-    SAVE_NOOP = 1 << 4
-    NO_LOAD = 1 << 5
-    NO_MODL_AUTOLOAD = 1 << 6
-    ENABLE_SPAN = 1 << 7
-
-    def __init__(self, root=None, loadpath=None, flags=NONE):
-        """Initialize the library.
-
-        Use 'root' as the filesystem root. If 'root' is None, use the value of
-        the environment variable AUGEAS_ROOT. If that doesn't exist either,
-        use "/".
-
-        'loadpath' is a colon-spearated list of directories that modules
-        should be searched in. This is in addition to the standard load path
-        and the directories in AUGEAS_LENS_LIB.
-
-        'flags' is a bitmask made up of values from AUG_FLAGS."""
-
-        # Sanity checks
-        if not isinstance(root, string_types) and root != None:
-            raise TypeError("root MUST be a string or None!")
-        if not isinstance(loadpath, string_types) and loadpath != None:
-            raise TypeError("loadpath MUST be a string or None!")
-        if not isinstance(flags, int):
-            raise TypeError("flag MUST be a flag!")
-
-        # Create the Augeas object
-        self.__handle = Augeas._libaugeas.aug_init(enc(root), enc(loadpath), flags)
-        if not self.__handle:
-            raise RuntimeError("Unable to create Augeas object!")
-        # Make sure self.__handle is a void*, not an integer
-        self.__handle = ctypes.c_void_p(self.__handle)
-
-    def __del__(self):
-        self.close()
-
-    def get(self, path):
-        """Lookup the value associated with 'path'.
-        Returns the value at the path specified.
-        It is an error if more than one node matches 'path'."""
-
-        # Sanity checks
-        if not isinstance(path, string_types):
-            raise TypeError("path MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Create the char * value
-        value = ctypes.c_char_p()
-
-        # Call the function and pass value by reference (char **)
-        ret = Augeas._libaugeas.aug_get(self.__handle, enc(path),
-                                        ctypes.byref(value))
-        if ret > 1:
-            raise ValueError("path specified had too many matches!")
-
-        return dec(value.value)
-
-    def label(self, path):
-        """Lookup the label associated with 'path'.
-        Returns the label of the path specified.
-        It is an error if more than one node matches 'path'."""
-
-        # Sanity checks
-        if not isinstance(path, string_types):
-            raise TypeError("path MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Create the char * value
-        label = ctypes.c_char_p()
-
-        # Call the function and pass value by reference (char **)
-        ret = Augeas._libaugeas.aug_label(self.__handle, enc(path),
-                                          ctypes.byref(label))
-        if ret > 1:
-            raise ValueError("path specified had too many matches!")
-
-        return dec(label.value)
-
-    def set(self, path, value):
-        """Set the value associated with 'path' to 'value'.
-        Intermediate entries are created if they don't exist.
-        It is an error if more than one node matches 'path'."""
-
-        # Sanity checks
-        if not isinstance(path, string_types):
-            raise TypeError("path MUST be a string!")
-        if not isinstance(value, string_types) and type(value) != type(None):
-            raise TypeError("value MUST be a string or None!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_set(self.__handle, enc(path), enc(value))
-        if ret != 0:
-            raise ValueError("Unable to set value to path!")
-
-    def setm(self, base, sub, value):
-        """Set the value of multiple nodes in one operation.
-        Find or create a node matching 'sub' by interpreting 'sub'
-        as a path expression relative to each node matching 'base'.
-        'sub' may be None, in which case all the nodes matching
-        'base' will be modified."""
-
-        # Sanity checks
-        if type(base) != str:
-            raise TypeError("base MUST be a string!")
-        if type(sub) != str and sub != None:
-            raise TypeError("sub MUST be a string or None!")
-        if type(value) != str:
-            raise TypeError("value MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_setm(
-            self.__handle, enc(base), enc(sub), enc(value))
-        if ret < 0:
-            raise ValueError("Unable to set value to path!")
-        return ret
-
-    def text_store(self, lens, node, path):
-        """Use the value of node 'node' as a string and transform it into a tree
-        using the lens 'lens' and store it in the tree at 'path', which will be
-        overwritten. 'path' and 'node' are path expressions."""
-
-        # Sanity checks
-        if not isinstance(lens, string_types):
-            raise TypeError("lens MUST be a string!")
-        if not isinstance(node, string_types):
-            raise TypeError("node MUST be a string!")
-        if not isinstance(path, string_types):
-            raise TypeError("path MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_text_store(
-            self.__handle, enc(lens), enc(node), enc(path))
-        if ret != 0:
-            raise ValueError("Unable to store text at node!")
-        return ret
-
-    def text_retrieve(self, lens, node_in, path, node_out):
-        """Transform the tree at 'path' into a string using lens 'lens' and store it in
-        the node 'node_out', assuming the tree was initially generated using the
-        value of node 'node_in'. 'path', 'node_in', and 'node_out' are path expressions."""
-
-        # Sanity checks
-        if not isinstance(lens, string_types):
-            raise TypeError("lens MUST be a string!")
-        if not isinstance(node_in, string_types):
-            raise TypeError("node_in MUST be a string!")
-        if not isinstance(path, string_types):
-            raise TypeError("path MUST be a string!")
-        if not isinstance(node_out, string_types):
-            raise TypeError("node_out MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_text_retrieve(
-            self.__handle, enc(lens), enc(node_in), enc(path), enc(node_out))
-        if ret != 0:
-            raise ValueError("Unable to store text at node!")
-        return ret
-
-    def defvar(self, name, expr):
-        """Define a variable 'name' whose value is the result of
-        evaluating 'expr'. If a variable 'name' already exists, its
-        name will be replaced with the result of evaluating 'expr'.
- 
-        If 'expr' is None, the variable 'name' will be removed if it
-        is defined.
- 
-        Path variables can be used in path expressions later on by
-        prefixing them with '$'."""
-
-        # Sanity checks
-        if type(name) != str:
-            raise TypeError("name MUST be a string!")
-        if type(expr) != str and expr != None:
-            raise TypeError("expr MUST be a string or None!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_defvar(self.__handle, enc(name), enc(expr))
-        if ret < 0:
-            raise ValueError("Unable to register variable!")
-        return ret
-
-    def defnode(self, name, expr, value):
-        """Define a variable 'name' whose value is the result of
-        evaluating 'expr', which must not be None and evaluate to a
-        nodeset. If a variable 'name' already exists, its name will
-        be replaced with the result of evaluating 'expr'.
- 
-        If 'expr' evaluates to an empty nodeset, a node is created,
-        equivalent to calling set(expr, value) and 'name' will be the
-        nodeset containing that single node."""
-
-        # Sanity checks
-        if type(name) != str:
-            raise TypeError("name MUST be a string!")
-        if type(expr) != str:
-            raise TypeError("expr MUST be a string!")
-        if type(value) != str:
-            raise TypeError("value MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_defnode(
-            self.__handle, enc(name), enc(expr), enc(value), None)
-        if ret < 0:
-            raise ValueError("Unable to register node!")
-        return ret
-
-    def move(self, src, dst):
-        """Move the node 'src' to 'dst'. 'src' must match exactly one node
-           in the tree. 'dst' must either match exactly one node in the
-           tree, or may not exist yet. If 'dst' exists already, it and all
-           its descendants are deleted before moving 'src' there. If 'dst'
-           does not exist yet, it and all its missing ancestors are created."""
-
-        # Sanity checks
-        if not isinstance(src, string_types):
-            raise TypeError("src MUST be a string!")
-        if not isinstance(dst, string_types):
-            raise TypeError("dst MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_mv(self.__handle, enc(src), enc(dst))
-        if ret != 0:
-            raise ValueError("Unable to move src to dst!")
-
-    def rename(self, src, dst):
-        """Rename the label of all nodes matching 'src' to 'lbl'."""
-
-        # Sanity checks
-        if not isinstance(src, string_types):
-            raise TypeError("src MUST be a string!")
-        if not isinstance(dst, string_types):
-            raise TypeError("dst MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_rename(self.__handle, enc(src), enc(dst))
-        if ret < 0:
-            raise ValueError("Unable to rename src as dst!")
-        return ret
-
-    def insert(self, path, label, before=True):
-        """Create a new sibling 'label' for 'path' by inserting into the tree
-        just before 'path' (if 'before' is True) or just after 'path'
-        (if 'before' is False).
-
-        'path' must match exactly one existing node in the tree, and 'label'
-        must be a label, i.e. not contain a '/', '*' or end with a bracketed
-        index '[N]'."""
-
-        # Sanity checks
-        if not isinstance(path, string_types):
-            raise TypeError("path MUST be a string!")
-        if not isinstance(label, string_types):
-            raise TypeError("label MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_insert(self.__handle, enc(path),
-                                           enc(label), before and 1 or 0)
-        if ret != 0:
-            raise ValueError("Unable to insert label!")
-
-    def remove(self, path):
-        """Remove 'path' and all its children. Returns the number of entries
-        removed. All nodes that match 'path', and their descendants, are
-        removed."""
-
-        # Sanity checks
-        if not isinstance(path, string_types):
-            raise TypeError("path MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        return Augeas._libaugeas.aug_rm(self.__handle, enc(path))
-
-    def match(self, path):
-        """Return the matches of the path expression 'path'. The returned paths
-        are sufficiently qualified to make sure that they match exactly one
-        node in the current tree.
-
-        Path expressions use a very simple subset of XPath: the path 'path'
-        consists of a number of segments, separated by '/'; each segment can
-        either be a '*', matching any tree node, or a string, optionally
-        followed by an index in brackets, matching tree nodes labelled with
-        exactly that string. If no index is specified, the expression matches
-        all nodes with that label; the index can be a positive number N, which
-        matches exactly the Nth node with that label (counting from 1), or the
-        special expression 'last()' which matches the last node with the given
-        label. All matches are done in fixed positions in the tree, and nothing
-        matches more than one path segment."""
-
-        # Sanity checks
-        if not isinstance(path, string_types):
-            raise TypeError("path MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Create a void ** (this is so python won't mangle the char **,
-        # when we free it)
-        array = ctypes.POINTER(ctypes.c_void_p)()
-
-        # Call the function and pass the void ** by reference (void ***)
-        ret = Augeas._libaugeas.aug_match(self.__handle, enc(path),
-                                          ctypes.byref(array))
-        if ret < 0:
-            raise RuntimeError("Error during match procedure!", path)
-
-        # Loop through the string array
-        matches = []
-        for i in range(ret):
-            if array[i]:
-                # Create a python string and append it to our matches list
-                matches.append(dec(ctypes.cast(array[i],
-                                               ctypes.c_char_p).value))
-
-                # Free the string at this point in the array
-                # Wrap the string as a void* as it was not allocated by Python
-                ctypes.pythonapi.PyMem_Free(ctypes.c_void_p(array[i]))
-
-        # Free the array itself
-        ctypes.pythonapi.PyMem_Free(array)
-
-        return matches
-
-    def span(self, path):
-        """Get the span according to input file of the node associated with
-        PATH. If the node is associated with a file, un tuple of 5 elements is
-        returned: (filename, label_start, label_end, value_start, value_end,
-        span_start, span_end). If the node associated with PATH doesn't
-        belong to a file or is doesn't exists, ValueError is raised."""
-
-        # Sanity checks
-        if not isinstance(path, string_types):
-            raise TypeError("path MUST be a string!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        filename = ctypes.c_char_p()
-        label_start = ctypes.c_uint()
-        label_end = ctypes.c_uint()
-        value_start = ctypes.c_uint()
-        value_end = ctypes.c_uint()
-        span_start = ctypes.c_uint()
-        span_end = ctypes.c_uint()
-
-        r = ctypes.byref
-
-        ret = Augeas._libaugeas.aug_span(self.__handle, enc(path), r(filename),
-                                         r(label_start), r(label_end),
-                                         r(value_start), r(value_end),
-                                         r(span_start), r(span_end))
-        if (ret < 0):
-            raise ValueError("Error during span procedure")
-
-        return (dec(filename.value), label_start.value, label_end.value,
-                value_start.value, value_end.value,
-                span_start.value, span_end.value)
-
-    def save(self):
-        """Write all pending changes to disk. Only files that had any changes
-        made to them are written.
-
-        If SAVE_NEWFILE is set in the creation 'flags', create changed files as
-        new files with the extension ".augnew", and leave the original file
-        unmodified.
-
-        Otherwise, if SAVE_BACKUP is set in the creation 'flags', move the
-        original file to a new file with extension ".augsave".
-
-        If neither of these flags is set, overwrite the original file."""
-
-        # Sanity checks
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        # Call the function
-        ret = Augeas._libaugeas.aug_save(self.__handle)
-        if ret != 0:
-            raise IOError("Unable to save to file!")
-
-    def load(self):
-        """Load files into the tree. Which files to load and what lenses to use
-        on them is specified under /augeas/load in the tree; each entry
-        /augeas/load/NAME specifies a 'transform', by having itself exactly one
-        child 'lens' and any number of children labelled 'incl' and 'excl'. The
-        value of NAME has no meaning.
-
-        The 'lens' grandchild of /augeas/load specifies which lens to use, and
-        can either be the fully qualified name of a lens 'Module.lens' or
-        '@Module'. The latter form means that the lens from the transform
-        marked for autoloading in MODULE should be used.
-
-        The 'incl' and 'excl' grandchildren of /augeas/load indicate which
-        files to transform. Their value are used as glob patterns. Any file
-        that matches at least one 'incl' pattern and no 'excl' pattern is
-        transformed. The order of 'incl' and 'excl' entries is irrelevant.
-
-        When AUG_INIT is first called, it populates /augeas/load with the
-        transforms marked for autoloading in all the modules it finds.
-
-        Before loading any files, AUG_LOAD will remove everything underneath
-        /augeas/files and /files, regardless of whether any entries have been
-        modified or not."""
-
-        # Sanity checks
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        ret = Augeas._libaugeas.aug_load(self.__handle)
-        if ret != 0:
-            raise RuntimeError("aug_load() failed!")
-
-    def clear_transforms(self):
-        """Clear all transforms beneath /augeas/load. If load() is called right
-        after this, there will be no files beneath /files."""
-        self.remove("/augeas/load/*")
-
-    def add_transform(self, lens, incl, name=None, excl=()):
-        """Add a transform beneath /augeas/load.
-
-        lens: the (file)name of the lens to use
-        incl: one or more glob patterns for the files to transform
-        name: deprecated parameter
-        excl: zero or more glob patterns of files to exclude from transforming
-        """
-
-        if name:
-            import warnings
-            warnings.warn("name is now deprecated in this function", DeprecationWarning,
-                          stacklevel=2)
-        if isinstance (incl, string_types):
-            incl = [incl]
-        if isinstance (excl, string_types):
-            excl = [excl]
-
-        for i in range(len(incl)):
-            self.transform(lens, incl[i], False)
-        for i in range(len(excl)):
-            self.transform(lens, excl[i], True)
-
-    def transform(self, lens, file, excl=False):
-        """Add a transform for 'file' using 'lens'.
-        'excl' specifies if this the file is to be included (False)
-        or excluded (True) from the 'lens'.
-        The 'lens' may be a module name or a full lens name.
-        If a module name is given, then lns will be the lens assumed.
-        """
-
-        if not isinstance(lens, string_types):
-            raise TypeError("lens MUST be a string!")
-        if not isinstance(file, string_types):
-            raise TypeError("file MUST be a string!")
-        if not isinstance(excl, bool):
-            raise TypeError("excl MUST be a boolean!")
-        if not self.__handle:
-            raise RuntimeError("The Augeas object has already been closed!")
-
-        ret = Augeas._libaugeas.aug_transform(self.__handle, enc(lens), enc(file), excl)
-        if ret != 0:
-            raise RuntimeError("Unable to add transform!")
-
-    def close(self):
-        """Close this Augeas instance and free any storage associated with it.
-        After this call, this Augeas instance is invalid and can not be used
-        for any more operations."""
-
-        # If we are already closed, return
-        if not self.__handle:
-            return
-
-        # Call the function
-        Augeas._libaugeas.aug_close(self.__handle)
-
-        # Mark the object as closed
-        self.__handle = None
-
-# for backwards compatibility
-# pylint: disable-msg=C0103
-class augeas(Augeas):
-    "Compat class, obsolete. Use class Augeas directly."
-
-    def __init__(self, *p, **k):
-        import warnings
-        warnings.warn("use Augeas instead of augeas", DeprecationWarning,
-                stacklevel=2)
-        super(augeas, self).__init__(*p, **k)


-- 
To view, visit https://gerrit.ovirt.org/43391
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7ee8f77d92e78e6e6a614542260aaa74d56145bc
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-node
Gerrit-Branch: master
Gerrit-Owner: Fabian Deutsch <fabiand at redhat.com>
Gerrit-Reviewer: Fabian Deutsch <fabiand at redhat.com>



More information about the node-patches mailing list