261 lines
6.8 KiB
Text
261 lines
6.8 KiB
Text
|
priority -50
|
||
|
|
||
|
#########################################################################
|
||
|
# Python helper code #
|
||
|
#########################################################################
|
||
|
|
||
|
global !p
|
||
|
import vim
|
||
|
import os.path
|
||
|
def get_module_namespace_and_basename():
|
||
|
"""This function will try to guess the current class, define or type
|
||
|
name you are trying to create. Note that for this to work you should be
|
||
|
using the module structure as per the style guide. Examples inputs and
|
||
|
it's output
|
||
|
* /home/nikolavp/puppet/modules/collectd/manifests/init.pp -> collectd
|
||
|
* /home/nikolavp/puppet/modules/collectd/manifests/mysql.pp -> collectd::mysql
|
||
|
* /home/nikolavp/puppet/modules/collectd/types/dbname.pp -> Collectd::Dbname
|
||
|
"""
|
||
|
first_time = True
|
||
|
current_file_path_without_ext = vim.eval('expand("%:p:r")') or ""
|
||
|
if not current_file_path_without_ext:
|
||
|
return "name"
|
||
|
parts = os.path.split(current_file_path_without_ext)
|
||
|
namespace = ''
|
||
|
while parts[0] and parts[0] != '/':
|
||
|
if parts[1] == 'init' and first_time and not namespace:
|
||
|
first_time = False
|
||
|
parts = os.path.split(parts[0])
|
||
|
continue
|
||
|
if parts[1] in ['manifests', 'types']:
|
||
|
parsed_name = os.path.split(
|
||
|
parts[0])[1] + ('::' + namespace).rstrip(':')
|
||
|
if parts[1] == 'types':
|
||
|
parsed_name = parsed_name.title()
|
||
|
return parsed_name
|
||
|
else:
|
||
|
namespace = parts[1] + '::' + namespace
|
||
|
parts = os.path.split(parts[0])
|
||
|
# couldn't guess the namespace. The user is editing a raw file in no module like the site.pp file
|
||
|
return "name"
|
||
|
endglobal
|
||
|
|
||
|
###############################################################################
|
||
|
# Puppet Language Constructs #
|
||
|
# See http://docs.puppetlabs.com/puppet/latest/reference/lang_summary.html #
|
||
|
###############################################################################
|
||
|
|
||
|
snippet class "Class declaration" b
|
||
|
class ${1:`!p snip.rv = get_module_namespace_and_basename()`} {
|
||
|
${0:# body}
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet define "Definition" b
|
||
|
define ${1:`!p snip.rv = get_module_namespace_and_basename()`} {
|
||
|
${0:# body}
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet type "Data type alias" b
|
||
|
type ${1:`!p snip.rv = get_module_namespace_and_basename()`} = ${2:Type}
|
||
|
endsnippet
|
||
|
|
||
|
snippet lambda "Lambda function chain-called on a variable"
|
||
|
$${1:varname}.${2:each} |${3:Type} $${4:param}| {
|
||
|
$0
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
#################################################################
|
||
|
# Puppet Types #
|
||
|
# See http://docs.puppetlabs.com/references/latest/type.html #
|
||
|
#################################################################
|
||
|
|
||
|
snippet cron "Cron resource type" b
|
||
|
cron { '${1:name}':
|
||
|
user => ${2:user},
|
||
|
command => '${3:command}',
|
||
|
minute => ${3:minute},
|
||
|
hour => ${4:hour},
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet exec "Exec resource type" b
|
||
|
exec { '${1:command}':
|
||
|
command => "${2:$1}",
|
||
|
user => "${3:root}",
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet file "File resource type" b
|
||
|
file { '${1:name}':
|
||
|
source => "puppet://${2:path}",
|
||
|
mode => ${3:mode},
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet File "Defaults for file" b
|
||
|
File {
|
||
|
owner => ${1:username},
|
||
|
group => ${2:groupname},
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet group "Group resource type" b
|
||
|
group { '${1:groupname}':
|
||
|
ensure => ${3:present},
|
||
|
gid => ${2:gid},
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet mount "Mount resource type" b
|
||
|
mount { '${1:path}':
|
||
|
device => '${2:/dev}',
|
||
|
fstype => '${3:filesystem}',
|
||
|
ensure => mounted,
|
||
|
options => 'rw,errors=remount-ro',
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet package "Package resource type" b
|
||
|
package { '${1:name}':
|
||
|
ensure => ${2:installed},
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet user "user resource type" b
|
||
|
user { '${1:username}':
|
||
|
ensure => ${2:present},
|
||
|
uid => ${3:uid},
|
||
|
gid => ${4:gid},
|
||
|
comment => ${5:gecos},
|
||
|
home => ${6:homedirectory},
|
||
|
managehome => false,
|
||
|
require => Group['${7:group'}],
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
snippet service "Service resource type" b
|
||
|
service { '${1:name}':
|
||
|
hasstatus => true,
|
||
|
enable => true,
|
||
|
ensure => running,
|
||
|
}
|
||
|
endsnippet
|
||
|
|
||
|
########################################################################
|
||
|
# Puppet Functions #
|
||
|
# See http://docs.puppetlabs.com/references/latest/function.html #
|
||
|
########################################################################
|
||
|
|
||
|
snippet alert "Alert Function" b
|
||
|
alert("${1:message}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet crit "Crit Function" b
|
||
|
crit("${1:message}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet debug "Debug Function" b
|
||
|
debug("${1:message}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet defined "Defined Function" b
|
||
|
defined(${1:Resource}["${2:name}"])$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet emerg "Emerg Function" b
|
||
|
emerg("${1:message}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet extlookup "Simple Extlookup" b
|
||
|
$${1:Variable} = extlookup("${2:Lookup}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet extlookup "Extlookup with defaults" b
|
||
|
$${1:Variable} = extlookup("${2:Lookup}", ${3:Default})$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet extlookup "Extlookup with defaults and custom data file" b
|
||
|
$${1:Variable} = extlookup("${2:Lookup}", ${3:Default}, ${4:Data Source})$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet fail "Fail Function" b
|
||
|
fail("${1:message}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet hiera "Hiera Function" b
|
||
|
$${1:Variable} = hiera("${2:Lookup}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet hiera "Hiera with defaults" b
|
||
|
$${1:Variable} = hiera("${2:Lookup}", ${3:Default})$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet hiera "Hiera with defaults and override" b
|
||
|
$${1:Variable} = hiera("${2:Lookup}", ${3:Default}, ${4:Override})$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet hiera_hash "Hiera Hash Function" b
|
||
|
$${1:Variable} = hiera_hash("${2:Lookup}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet hiera_hash "Hiera Hash with defaults" b
|
||
|
$${1:Variable} = hiera_hash("${2:Lookup}", ${3:Default})$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet hiera_hash "Hiera Hash with defaults and override" b
|
||
|
$${1:Variable} = hiera_hash("${2:Lookup}", ${3:Default}, ${4:Override})$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet hiera_include "Hiera Include Function" b
|
||
|
hiera_include("${1:Lookup}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet lookup "Lookup data from hiera"
|
||
|
$${1:varname} = lookup('${2:hiera::key}')$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet trocla "Lookup or generate sensitive information"
|
||
|
trocla('${1:lookup_key}', '${2:plain}', ${3:'length: 32'})$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet include "Include Function" b
|
||
|
include ${1:classname}$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet info "Info Function" b
|
||
|
info("${1:message}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet inline_template "Inline Template Function" b
|
||
|
inline_template("<%= ${1:template} %>")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet notice "Notice Function" b
|
||
|
notice("${1:message}")$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet realize "Realize Function" b
|
||
|
realize(${1:Resource}["${2:name}"])$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet regsubst "Regsubst Function" b
|
||
|
regsubst($${1:Target}, '${2:regexp}', '${3:replacement}')$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet split "Split Function" b
|
||
|
$${1:Variable} = split($${1:Target}, '${2:regexp}')$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet versioncmp "Version Compare Function" b
|
||
|
$${1:Variable} = versioncmp('${1:version}', '${2:version}')$0
|
||
|
endsnippet
|
||
|
|
||
|
snippet warning "Warning Function" b
|
||
|
warning("${1:message}")$0
|
||
|
endsnippet
|
||
|
|
||
|
# vim:ft=snippets:
|