hi!  Does anyone have any advice on debugging a new custom type?

Any thoughts would be greatly appreciated . . .

BTW, I'm getting the error:
err: Could not retrieve catalog from remote server: Error 400 on SERVER:
Could not render to pson: undefined method `merge' for []:Array

with some very rough code.

The Type (vncserver.rb):
module Puppet
  newtype(:vncserver) do

    ensurable

    newproperty(:port) do
      desc "The vnc servers port assignment.  Will be +5900 on the server"
        validate do |value|
          unless value.is_i?
            raise Puppet::Error, "Invalid Port number"
          end
        end
    end

    newproperty(:username) do
      desc "The user who will own the VNC session."
      isnamevar
      validate do |value|
        unless value !~ /\s/
          raise Puppet::Error, "Must be a valid username. No spaces,
please."
        end
      end
    end

    newproperty(:geometry) do
      desc "Resolution for VNC, in XxY, e.g. 1024x768."
      validate do |value|
        unless value !~ /^\d*x\d*$/
          raise Puppet::Error, "Must be a valid geometry. e.g., 1024x768."
        end
      end
    end

    newparam(:password) do
      desc "Password to be put into users .vnc/passwd."
      validate do |value|
        unless hostpart =~ /^([\d\w]+|[\d\w][\d\w\-]+[\d\w])$/
          raise Puppet::Error, "Invalid host name"
        end
      end
    end

    newparam(:args) do
      desc "Optional arguments to be added to the vncserver command-line."
      end
    end

    @doc = "Installs and manages entries for vncservers.  For Redhat-bases
      systems, and likely many others, these entries will be in
      /etc/sysconfig/vncservers."

end


The Provider (parsed.rb):
require 'puppet/provider/parsedfile'

vncservers = "/etc/sysconfig/vncservers"

Puppet::Type.type(:vncserver).provide(:parsed,
                                      :parent =>
Puppet::Provider::ParsedFile,
                                      :default_target => vncservers,
                                      :filetype => :flat
                                      ) do

  desc "The vncserver provider that uses the ParsedFile class"

  confine :exists => vncservers
  text_line :comment, :match => /^#/;
  text_line :blank, :match => /\s*$/;

  text_line :blank, :match => /\s*$/;

  record_line :parsed, :fields => %w{vncservers}, :match =>
/^VNCSERVERS="(.*)"/

end


And The Manifest:
class vncserver {

  include common::vnc


  package {
    'tigervnc-server':
      ensure => 'installed';
  }

  vncserver {
    'gmatz':
      port => '92',
      geometry => '1024x768',
      password => 'gmatz';
  }
}

-- 
You received this message because you are subscribed to the Google Groups 
"Puppet Users" group.
To post to this group, send email to puppet-users@googlegroups.com.
To unsubscribe from this group, send email to 
puppet-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/puppet-users?hl=en.

Reply via email to