CedarBackup2.extend.subversion.LocalConfig

Package CedarBackup2 :: Package extend :: Module subversion :: Class LocalConfig |
[hide private]
[frames] | no frames]

# Class LocalConfig

source code

    object --+
             |
            LocalConfig

Class representing this extension's configuration document.

This is not a general-purpose configuration object like the main Cedar Backup configuration object. Instead, it just knows how to parse and emit Subversion-specific configuration values. Third parties who need to read and write configuration related to this extension should access it through the constructor, `validate` and `addConfig` methods.

Note: Lists within this class are "unordered" for equality comparisons.

Instance Methods | [hide private]
__init__(self, xmlData=None, xmlPath=None, validate=True) Initializes a configuration object. | source code
__repr__(self) Official string representation for class instance. | source code
__str__(self) Informal string representation for class instance. | source code
__cmp__(self, other) Definition of equals operator for this class. | source code
validate(self) Validates configuration represented by the object. | source code
addConfig(self, xmlDom, parentNode) Adds a <subversion> configuration section as the next child of a parent. | source code
_setSubversion(self, value) Property target used to set the subversion configuration value. | source code
_getSubversion(self) Property target used to get the subversion configuration value. | source code
_parseXmlData(self, xmlData) Internal method to parse an XML string into the object. | source code
Inherited from `object`: `__delattr__`, `__format__`, `__getattribute__`, `__hash__`, `__new__`, `__reduce__`, `__reduce_ex__`, `__setattr__`, `__sizeof__`, `__subclasshook__`

Static Methods | [hide private]
_parseSubversion(parent) Parses a subversion configuration section. | source code
_parseRepositories(parent) Reads a list of `Repository` objects from immediately beneath the parent. | source code
_addRepository(xmlDom, parentNode, repository) Adds a repository container as the next child of a parent. | source code
_parseRepositoryDirs(parent) Reads a list of `RepositoryDir` objects from immediately beneath the parent. | source code
_parseExclusions(parentNode) Reads exclusions data from immediately beneath the parent. | source code
_addRepositoryDir(xmlDom, parentNode, repositoryDir) Adds a repository dir container as the next child of a parent. | source code

Properties | [hide private]
| subversion Subversion configuration in terms of a `SubversionConfig` object.
Inherited from `object`: `__class__`

Method Details | [hide private]

### __init__(self, xmlData=None, xmlPath=None, validate=True) (Constructor) | source code
Initializes a configuration object. If you initialize the object without passing either `xmlData` or `xmlPath` then configuration will be empty and will be invalid until it is filled in properly. No reference to the original XML data or original path is saved off by this class. Once the data has been parsed (successfully or not) this original information is discarded. Unless the `validate` argument is `False`, the LocalConfig.validate method will be called (with its default arguments) against configuration after successfully parsing any passed-in XML. Keep in mind that even if `validate` is `False`, it might not be possible to parse the passed-in XML document if lower-level validations fail. Parameters: `xmlData` (String data.) - XML data representing configuration. `xmlPath` (Absolute path to a file on disk.) - Path to an XML file on disk. `validate` (Boolean true/false.) - Validate the document after parsing it. Raises: `ValueError` - If both `xmlData` and `xmlPath` are passed-in. `ValueError` - If the XML data in `xmlData` or `xmlPath` cannot be parsed. `ValueError` - If the parsed configuration document is not valid. Overrides: object.__init__ Note: It is strongly suggested that the `validate` option always be set to `True` (the default) unless there is a specific need to read in invalid configuration from disk.

### __repr__(self) (Representation operator) | source code
Official string representation for class instance. Overrides: object.__repr__

### __str__(self) (Informal representation operator) | source code
Informal string representation for class instance. Overrides: object.__str__

### __cmp__(self, other) (Comparison operator) | source code
Definition of equals operator for this class. Lists within this class are "unordered" for equality comparisons. Parameters: `other` - Other object to compare to. Returns: -1/0/1 depending on whether self is `<`, `=` or `>` other.

### validate(self) | source code
Validates configuration represented by the object. Subversion configuration must be filled in. Within that, the collect mode and compress mode are both optional, but the list of repositories must contain at least one entry. Each repository must contain a repository path, and then must be either able to take collect mode and compress mode configuration from the parent `SubversionConfig` object, or must set each value on its own. Raises: `ValueError` - If one of the validations fails.

### addConfig(self, xmlDom, parentNode) | source code
Adds a <subversion> configuration section as the next child of a parent. Third parties should use this function to write configuration related to this extension. We add the following fields to the document:
      collectMode    //cb_config/subversion/collectMode
      compressMode   //cb_config/subversion/compressMode
We also add groups of the following items, one list element per item:
      repository     //cb_config/subversion/repository
      repository_dir //cb_config/subversion/repository_dir
Parameters: `xmlDom` - DOM tree as from `impl.createDocument()`. `parentNode` - Parent that the section should be appended to.

### _setSubversion(self, value) | source code
Property target used to set the subversion configuration value. If not `None`, the value must be a `SubversionConfig` object. Raises: `ValueError` - If the value is not a `SubversionConfig`

### _parseXmlData(self, xmlData) | source code
Internal method to parse an XML string into the object. This method parses the XML document into a DOM tree (`xmlDom`) and then calls a static method to parse the subversion configuration section. Parameters: `xmlData` (String data) - XML data to be parsed Raises: `ValueError` - If the XML cannot be successfully parsed.

### _parseSubversion(parent) Static Method | source code
Parses a subversion configuration section. We read the following individual fields:
      collectMode    //cb_config/subversion/collect_mode
      compressMode   //cb_config/subversion/compress_mode
We also read groups of the following item, one list element per item:
      repositories    //cb_config/subversion/repository
      repository_dirs //cb_config/subversion/repository_dir
The repositories are parsed by _parseRepositories, and the repository dirs are parsed by _parseRepositoryDirs. Parameters: `parent` - Parent node to search beneath. Returns: `SubversionConfig` object or `None` if the section does not exist. Raises: `ValueError` - If some filled-in value is invalid.

### _parseRepositories(parent) Static Method | source code
Reads a list of `Repository` objects from immediately beneath the parent. We read the following individual fields:
      repositoryType          type
      repositoryPath          abs_path
      collectMode             collect_mode
      compressMode            compess_mode
The type field is optional, and its value is kept around only for reference. Parameters: `parent` - Parent node to search beneath. Returns: List of `Repository` objects or `None` if none are found. Raises: `ValueError` - If some filled-in value is invalid.

### _addRepository(xmlDom, parentNode, repository) Static Method | source code
Adds a repository container as the next child of a parent. We add the following fields to the document:
      repositoryType          repository/type
      repositoryPath          repository/abs_path
      collectMode             repository/collect_mode
      compressMode            repository/compress_mode
The <repository> node itself is created as the next child of the parent node. This method only adds one repository node. The parent must loop for each repository in the `SubversionConfig` object. If `repository` is `None`, this method call will be a no-op. Parameters: `xmlDom` - DOM tree as from `impl.createDocument()`. `parentNode` - Parent that the section should be appended to. `repository` - Repository to be added to the document.

### _parseRepositoryDirs(parent) Static Method | source code
Reads a list of `RepositoryDir` objects from immediately beneath the parent. We read the following individual fields:
      repositoryType          type
      directoryPath           abs_path
      collectMode             collect_mode
      compressMode            compess_mode
We also read groups of the following items, one list element per item:
      relativeExcludePaths    exclude/rel_path
      excludePatterns         exclude/pattern
The exclusions are parsed by _parseExclusions. The type field is optional, and its value is kept around only for reference. Parameters: `parent` - Parent node to search beneath. Returns: List of `RepositoryDir` objects or `None` if none are found. Raises: `ValueError` - If some filled-in value is invalid.

### _parseExclusions(parentNode) Static Method | source code
Reads exclusions data from immediately beneath the parent. We read groups of the following items, one list element per item:
      relative    exclude/rel_path
      patterns    exclude/pattern
If there are none of some pattern (i.e. no relative path items) then `None` will be returned for that item in the tuple. Parameters: `parentNode` - Parent node to search beneath. Returns: Tuple of (relative, patterns) exclusions.

### _addRepositoryDir(xmlDom, parentNode, repositoryDir) Static Method | source code
Adds a repository dir container as the next child of a parent. We add the following fields to the document:
      repositoryType          repository_dir/type
      directoryPath           repository_dir/abs_path
      collectMode             repository_dir/collect_mode
      compressMode            repository_dir/compress_mode
We also add groups of the following items, one list element per item:
      relativeExcludePaths    dir/exclude/rel_path
      excludePatterns         dir/exclude/pattern
The <repository_dir> node itself is created as the next child of the parent node. This method only adds one repository node. The parent must loop for each repository dir in the `SubversionConfig` object. If `repositoryDir` is `None`, this method call will be a no-op. Parameters: `xmlDom` - DOM tree as from `impl.createDocument()`. `parentNode` - Parent that the section should be appended to. `repositoryDir` - Repository dir to be added to the document.

Property Details | [hide private]

### subversion Subversion configuration in terms of a `SubversionConfig` object. Get Method: _getSubversion(self) - Property target used to get the subversion configuration value. Set Method: _setSubversion(self, value) - Property target used to set the subversion configuration value.