voxpupuli/puppet-wildfly

Generate defined types from DMR

jairojunior opened this issue · 0 comments

Wildfly has a detyped management API to manipulate Management Model that wildscribe.github.io uses to generate a documentation, but we could use to generate defined types for specific versions, for example:

The following resource https://wildscribe.github.io/Wildfly/10.0.0.Final/subsystem/messaging-activemq/server/jms-queue/index.html

would become:

# wildfly::messaging_activemq::jms_queue
#
# Defines a JMS queue.
#
# @param selector The queue selector. 
# @param durable Whether the queue is durable or not. 
# @param entries The jndi names the queue will be bound to. 
define wildfly::messaging_activemq::jms_queue(
  Variant[String, Array] entries, 
  Variant[String, Boolean] durable = undef, 
  String selector = undef) {

    content => {
      'entries'  => $entries,
      'durable'  => $durable,
      'selector' => $selector,
    }

    wildfly::resource { '/subsystem=messaging-activemq/server=default/jms-queue=${title}':
      content => $content,
    }
}

Challenges:

1 - Many resources would allow expressions (Pattern[\${\w+(\.\w*)*}]) as a value.
2 - A version prefix would be required, e.g wildfly::10_1_0::messaging_activemq::jms_queue instead of just wildfly::messaging_activemq::jms_queue. And something like wildfly::eap::7_0_0::messaging_activemq::jms_queue for EAP.

Another approach for 2 would be to have modules for specific distributions/versions with biemond-wildfly as a dependency.