summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--schemas/atom.xsd35
-rw-r--r--schemas/base.xsd12
-rw-r--r--schemas/bundle.xsd29
-rw-r--r--schemas/pkglist.xsd16
-rw-r--r--schemas/rules.xsd69
-rw-r--r--schemas/services.xsd2
-rw-r--r--src/lib/Server/Plugins/Pkgmgr.py2
7 files changed, 98 insertions, 67 deletions
diff --git a/schemas/atom.xsd b/schemas/atom.xsd
index 55be1c393..db0761acc 100644
--- a/schemas/atom.xsd
+++ b/schemas/atom.xsd
@@ -7,39 +7,8 @@
</xsd:documentation>
</xsd:annotation>
- <xsd:complexType name='ConfigFileType'>
- <xsd:attribute type='xsd:string' name='name' use='required'/>
- </xsd:complexType>
-
- <xsd:complexType name='DirectoryType'>
- <xsd:attribute type='xsd:string' name='name' use='required'/>
- <xsd:attribute type='xsd:string' name='perms'/>
- <xsd:attribute type='xsd:string' name='owner'/>
- <xsd:attribute type='xsd:string' name='group'/>
- </xsd:complexType>
-
- <xsd:complexType name='PackageType'>
- <xsd:attribute type='xsd:string' name='name' use='required'/>
- <xsd:attribute type='xsd:string' name='reloc' use='optional'/>
- </xsd:complexType>
-
- <xsd:complexType name='ServiceType'>
- <xsd:attribute type='xsd:string' name='name' use='required'/>
- <xsd:attribute type='xsd:string' name='type'/>
- </xsd:complexType>
-
- <xsd:complexType name='SymLinkType'>
- <xsd:attribute type='xsd:string' name='name' use='required'/>
- <xsd:attribute type='xsd:string' name='to' use='required'/>
- </xsd:complexType>
-
- <xsd:complexType name='PermissionType'>
- <xsd:attribute type='xsd:string' name='name' use='required'/>
- <xsd:attribute type='xsd:string' name='perms' use='required'/>
- </xsd:complexType>
-
- <xsd:complexType name='PostInstallType'>
- <xsd:attribute type='xsd:string' name='name' use='required'/>
+ <xsd:complexType name='StructureEntry'>
+ <xsd:attribute type='xsd:string' name='name' use='reqiured'/>
</xsd:complexType>
</xsd:schema> \ No newline at end of file
diff --git a/schemas/base.xsd b/schemas/base.xsd
index 61e065ecc..5be582850 100644
--- a/schemas/base.xsd
+++ b/schemas/base.xsd
@@ -12,12 +12,12 @@
<xsd:complexType name='ContainerType'>
<xsd:choice minOccurs='0' maxOccurs='unbounded'>
- <xsd:element name='Package' type='PackageType'/>
- <xsd:element name='Service' type='ServiceType'/>
- <xsd:element name='ConfigFile' type='ConfigFileType'/>
- <xsd:element name='SymLink' type='SymLinkType'/>
- <xsd:element name='Directory' type='DirectoryType'/>
- <xsd:element name='Permissions' type='PermissionType'/>
+ <xsd:element name='Package' type='StructureEntry'/>
+ <xsd:element name='Service' type='StructureEntry'/>
+ <xsd:element name='ConfigFile' type='StructureEntry'/>
+ <xsd:element name='SymLink' type='StructureEntry'/>
+ <xsd:element name='Directory' type='StructureEntry'/>
+ <xsd:element name='Permissions' type='StructureEntry'/>
<xsd:element name='Group' type='ContainerType'/>
</xsd:choice>
<xsd:attribute name='name' type='xsd:string'/>
diff --git a/schemas/bundle.xsd b/schemas/bundle.xsd
index 66fc6d9a7..e048063fa 100644
--- a/schemas/bundle.xsd
+++ b/schemas/bundle.xsd
@@ -11,13 +11,13 @@
<xsd:complexType name='GroupType'>
<xsd:choice minOccurs='0' maxOccurs='unbounded'>
- <xsd:element name='Package' type='PackageType'/>
- <xsd:element name='Service' type='ServiceType'/>
- <xsd:element name='ConfigFile' type='ConfigFileType'/>
- <xsd:element name='Directory' type='DirectoryType'/>
- <xsd:element name='SymLink' type='SymLinkType'/>
- <xsd:element name='Permissions' type='PermissionType'/>
- <xsd:element name='PostInstall' type='PostInstallType'/>
+ <xsd:element name='Package' type='StructureEntry'/>
+ <xsd:element name='Service' type='StructureEntry'/>
+ <xsd:element name='ConfigFile' type='StructureEntry'/>
+ <xsd:element name='Directory' type='StructureEntry'/>
+ <xsd:element name='SymLink' type='StructureEntry'/>
+ <xsd:element name='Permissions' type='StructureEntry'/>
+ <xsd:element name='PostInstall' type='StructureEntry'/>
<xsd:element name='Group' type='GroupType'/>
</xsd:choice>
<xsd:attribute type='xsd:string' name='name' use='required'/>
@@ -26,14 +26,13 @@
<xsd:element name='Bundle'>
<xsd:complexType>
<xsd:choice minOccurs='0' maxOccurs='unbounded'>
- <xsd:element type='GroupType' name='Group'/>
- <xsd:element name='Package' type='PackageType'/>
- <xsd:element name='Service' type='ServiceType'/>
- <xsd:element name='ConfigFile' type='ConfigFileType'/>
- <xsd:element name='Directory' type='DirectoryType'/>
- <xsd:element name='SymLink' type='SymLinkType'/>
- <xsd:element name='Permission' type='PermissionType'/>
- <xsd:element name='PostInstall' type='PostInstallType'/>
+ <xsd:element name='Package' type='StructureEntry'/>
+ <xsd:element name='Service' type='StructureEntry'/>
+ <xsd:element name='ConfigFile' type='StructureEntry'/>
+ <xsd:element name='Directory' type='StructureEntry'/>
+ <xsd:element name='SymLink' type='StructureEntry'/>
+ <xsd:element name='Permission' type='StructureEntry'/>
+ <xsd:element name='PostInstall' type='StructureEntry'/>
<xsd:element name='Group' type='GroupType'/>
</xsd:choice>
<xsd:attribute type='xsd:string' name='name'/>
diff --git a/schemas/pkglist.xsd b/schemas/pkglist.xsd
index 231942a5b..bd73e8095 100644
--- a/schemas/pkglist.xsd
+++ b/schemas/pkglist.xsd
@@ -8,39 +8,33 @@
</xsd:documentation>
</xsd:annotation>
+ <xsd:include schemaLocation="types.xsd"/>
+
<xsd:complexType name='PackageType'>
<xsd:attribute type='xsd:string' name='name'/>
<xsd:attribute type='xsd:string' name='version'/>
<xsd:attribute type='xsd:string' name='file'/>
<xsd:attribute type='xsd:string' name='verify'/>
<xsd:attribute type='xsd:string' name='simplefile'/>
+ <xsd:attribute type='xsd:string' name='reloc'/>
</xsd:complexType>
<xsd:complexType name='ContainerType'>
<xsd:choice minOccurs='0' maxOccurs='unbounded'>
<xsd:element name='Package' type='PackageType'/>
<xsd:element name='Group' type='ContainerType'/>
- <xsd:element name='Host' type='ContainerType'/>
+ <xsd:element name='Client' type='ContainerType'/>
</xsd:choice>
<xsd:attribute name='name' type='xsd:string'/>
</xsd:complexType>
- <xsd:simpleType name='PackageTypeType'>
- <xsd:restriction base='xsd:string'>
- <xsd:enumeration value='deb' />
- <xsd:enumeration value='rpm' />
- <xsd:enumeration value='encap' />
- <xsd:enumeration value='sysv' />
- </xsd:restriction>
- </xsd:simpleType>
-
<xsd:element name='PackageList'>
<xsd:complexType>
<xsd:choice minOccurs='0' maxOccurs='unbounded'>
<xsd:element name='Group' type='ContainerType'/>
</xsd:choice>
<xsd:attribute name='priority' type='xsd:integer' use='required'/>
- <xsd:attribute name='type' use='optional' type='PackageTypeType' />
+ <xsd:attribute name='type' use='optional' type='PackageTypeEnum' />
<xsd:attribute name='uri' type='xsd:string' use='optional'/>
</xsd:complexType>
</xsd:element>
diff --git a/schemas/rules.xsd b/schemas/rules.xsd
new file mode 100644
index 000000000..46c62bd27
--- /dev/null
+++ b/schemas/rules.xsd
@@ -0,0 +1,69 @@
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en">
+
+ <xsd:annotation>
+ <xsd:documentation>
+ string enumeration definitions for bcfg2
+ Narayan Desai, Argonne National Laboratory
+ $Id$
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:include schemaLocation="types.xsd"/>
+
+ <xsd:complexType name='ServiceType'>
+ <xsd:attribute type='xsd:string' name='name'/>
+ <xsd:attribute type='StatusEnum' name='status'/>
+ <xsd:attribute type='xsd:string' name='reload'/>
+ </xsd:complexType>
+
+ <xsd:complexType name='PackageType'>
+ <xsd:attribute type='xsd:string' name='name'/>
+ <xsd:attribute type='xsd:string' name='version'/>
+ </xsd:complexType>
+
+ <xsd:complexType name='DirectoryType'>
+ <xsd:attribute type='xsd:string' name='name' use='required'/>
+ <xsd:attribute type='xsd:string' name='perms'/>
+ <xsd:attribute type='xsd:string' name='owner'/>
+ <xsd:attribute type='xsd:string' name='group'/>
+ </xsd:complexType>
+
+ <xsd:complexType name='SymLinkType'>
+ <xsd:attribute type='xsd:string' name='name' use='required'/>
+ <xsd:attribute type='xsd:string' name='to' use='required'/>
+ </xsd:complexType>
+
+ <xsd:complexType name='PermissionsType'>
+ <xsd:attribute type='xsd:string' name='name' use='required'/>
+ <xsd:attribute type='xsd:string' name='perms' use='required'/>
+ </xsd:complexType>
+
+ <xsd:complexType name='RContainerType'>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element name='Service' type='ServiceType'/>
+ <xsd:element name='Directory' type='DirectoryType'/>
+ <xsd:element name='SymLink' type='SymLinkType'/>
+ <xsd:element name='Package' type='PackageType'/>
+ <xsd:element name='Permissions' type='PermissionsType'/>
+ <xsd:element name='Group' type='ContainerType'/>
+ <xsd:element name='Client' type='ContainerType'/>
+ </xsd:choice>
+ <xsd:attribute name='name' type='xsd:string'/>
+ </xsd:complexType>
+
+
+ <xsd:element name='Rules'>
+ <xsd:complexType>
+ <xsd:choice minOccurs='0' maxOccurs='unbounded'>
+ <xsd:element name='Service' type='ServiceType'/>
+ <xsd:element name='Directory' type='DirectoryType'/>
+ <xsd:element name='SymLink' type='SymLinkType'/>
+ <xsd:element name='Package' type='PackageType'/>
+ <xsd:element name='Permissions' type='PermissionsType'/>
+ <xsd:element name='Group' type='RContainerType'/>
+ <xsd:element name='Client' type='RContainerType'/>
+ </xsd:choice>
+ <xsd:attribute name='priority' type='xsd:integer' use='required'/>
+ </xsd:complexType>
+ </xsd:element>
+</xsd:schema> \ No newline at end of file
diff --git a/schemas/services.xsd b/schemas/services.xsd
index 25b59b33c..d0a19fb1e 100644
--- a/schemas/services.xsd
+++ b/schemas/services.xsd
@@ -28,7 +28,7 @@
<xsd:choice minOccurs='0' maxOccurs='unbounded'>
<xsd:element name='Service' type='ServiceType'/>
<xsd:element name='Group' type='ContainerType'/>
- <xsd:element name='Host' type='ContainerType'/>
+ <xsd:element name='Client' type='ContainerType'/>
</xsd:choice>
<xsd:attribute name='name' type='xsd:string'/>
</xsd:complexType>
diff --git a/src/lib/Server/Plugins/Pkgmgr.py b/src/lib/Server/Plugins/Pkgmgr.py
index a322af0d0..a009e2910 100644
--- a/src/lib/Server/Plugins/Pkgmgr.py
+++ b/src/lib/Server/Plugins/Pkgmgr.py
@@ -31,7 +31,7 @@ class PNode(Bcfg2.Server.Plugin.INode):
else:
if pkg.attrib.has_key('file'):
pkg.set('url', '%s/%s' % (pkg.get('uri'), pkg.get('file')))
- if self.splitters.has_key(pkg.get('type')):
+ if self.splitters.has_key(pkg.get('type')) and pkg.get('file') != None:
mdata = self.splitters[pkg.get('type')].match(pkg.get('file'))
if not mdata:
logger.error("Failed to match pkg %s" % pkg.get('file'))