class <%= module_name %> (
  String $config_name,
  Array[String] $client_files = [],
  Array[String] $client_directories = [],
  Array[String] $server_files = [],
  Array[String] $server_directories = [],
  Array[String] $common_files = [],
  Array[String] $common_directories = [],
  Array[String] $executable_files = [],
  Boolean $manage_gem_dependencies = true,
  Hash $gem_dependencies = {},
  Boolean $manage_package_dependencies = true,
  Hash $package_dependencies = {},
  Boolean $manage_class_dependencies = true,
  Array[String] $class_dependencies = [],
  Mcollective::Policy_action $policy_default = $mcollective::policy_default,
  Array[Mcollective::Policy] $policies = [],
  Hash $config = {},
  Hash $client_config = {},
  Hash $server_config = {},
  Boolean $client = $mcollective::client,
  Boolean $server = $mcollective::server,
  Enum["present", "absent"] $ensure = "present"
) {
  mcollective::module_plugin{$name:
    config_name                 => $config_name,
    client_files                => $client_files,
    server_files                => $server_files,
    common_files                => $common_files,
    executable_files            => $executable_files,
    client_directories          => $client_directories,
    server_directories          => $server_directories,
    common_directories          => $common_directories,
    gem_dependencies            => $gem_dependencies,
    manage_gem_dependencies     => $manage_gem_dependencies,
    package_dependencies        => $package_dependencies,
    manage_package_dependencies => $manage_package_dependencies,
    class_dependencies          => $class_dependencies,
    policy_default              => $policy_default,
    policies                    => $policies,
    config                      => $config,
    client_config               => $client_config,
    server_config               => $server_config,
    client                      => $client,
    server                      => $server,
    ensure                      => $ensure
  }
}
