summaryrefslogtreecommitdiffstats
path: root/doc/server/plugins/connectors/properties.txt
blob: ef408916ee0cfef043586f1b9a4df87e4aeb4b91 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
.. -*- mode: rst -*-

.. _server-plugins-properties:

==========
Properties
==========

The Properties plugin is a connector plugin that adds information from
properties files into client metadata instances.

Enabling Properties
===================

First, ``mkdir /var/lib/bcfg2/Properties``. Each property XML file goes
in this directory. Each will automatically be cached by the server,
and reread/reparsed upon changes. Add **Properties** to your ``plugins``
line in ``/etc/bcfg2.conf``.

Data Structures
===============

Properties adds a new dictionary to client metadata instances that maps
property file names to PropertyFile instances. PropertyFile instances
contain parsed XML data as the "data" attribute.

The XML data in a property file is arbitrary, but a matching ``.xsd``
file can be created to assign a schema to a property file, which will
be checked when running ``bcfg2-repo-validate``.  For instance, given::

    Properties/dns-config.xml
    Properties/dns-config.xsd

``dns-config.xml`` will be validated against ``dns-config.xsd``.

Usage
=====

Specific property files can be referred to in
templates as ``metadata.Properties[<filename>]``. The
data attribute is an LXML element object. (Documented
`here <http://codespeak.net/lxml/tutorial.html#the-element-class>`_)

Currently, no access methods are defined for this data, but as we
formulate common use cases, we will add them to the !PropertyFile class
as methods. This will simplify templates.

Accessing Properties contents from TGenshi
==========================================

Access contents of ``Properties/auth.xml``::


    ${metadata.Properties['auth.xml'].data.find('file').find('bcfg2.key').text}