...
simpkvKey
is a case-invariant string for the key . (excluding path)This is used as the final RDN of the DN for a key/value node.
simpkvJsonValue
is a case-sensitive string for the JSON-formatted value.In the future, we could write a custom syntax validator for this attribute.
...
The proposed custom schema for the simpkv DIT option 2 is shown below. It has two custom object classes and three custom attributes.
Classes:
simpkvFolder
is an object class for a node representing a backend identifier or folder.simpkvEntry
is an object class for a key/value node.
Attributes:
simpkvHexId
is an attribute that is a case-invariant, hex-encoded string for the backend identifier, folder or key
(excluding path)
This is used as the final RDN of the DN for a node.
In the future, we could write a custom syntax validator for this attribute.
simpkvId
is an attribute that is the raw, case-sensitive string for a backend identifier, folder or key
(excluding path)
simpkvJsonValue
is an attribute that is a case-sensitive string for a JSON-formatted value in a key/value node.In the future, we could write a custom syntax validator for this attribute.
Code Block |
---|
################################################################################ # dn: cn=schema # ################################################################################ # attributeTypes: ( 1.3.6.1.4.1.47012.1.1.1.1.1.1 NAME 'simpkvHexId' DESC 'hex-encoded backend instance, folder, or key name' SUP name SINGLE-VALUE X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # attributeTypes: ( 1.3.6.1.4.1.47012.1.1.1.1.1.2 NAME 'simpkvId' DESC 'backend instance, key or folder name' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # attributeTypes: ( 1.3.6.1.4.1.47012.1.1.1.1.1.3 NAME 'simpkvJsonValue' DESC 'JSON-formatted value' EQUALITY caseExactMatch SUBSTR caseExactSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # objectClasses: ( 1.3.6.1.4.1.47012.1.1.1.1.2.1 NAME 'simpkvEntry' DESC 'simpkv entry' SUP top STRUCTURAL MUST ( simpkvHexId $ simpkvId $ simpkvJsonValue ) X-ORIGIN 'SIMP simpkv' ) # ################################################################################ # objectClasses: ( 1.3.6.1.4.1.47012.1.1.1.1.2.2 NAME 'simpkvFolder' DESC 'simpkv folder in which simpKvHexId represents the relative folder name in hex in the DN' SUP top STRUCTURAL MUST ( simpkvHexId $ simpkvId ) X-ORIGIN 'SIMP simpkv' ) |
...
Plugins are written in Ruby and implement the simpkv plugin API.
Plugins must be multi-thread safe.
Plugins must be written to provide Puppet-environment isolation when executed on the puppetserver.
Manifests that use
simpkv::*
functions must be able to be compiled withpuppet agent
,puppet apply
or Bolt commands. This means the plugin code will run in JRuby in the puppetserver, run in the Ruby installed with puppet-agent, or run using the Bolt user’s Ruby into which the puppet gem is installed.
...