ruby-ldap 0.9.11 → 0.9.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/ChangeLog +18 -0
- data/FAQ +5 -9
- data/NOTES +29 -0
- data/README +22 -18
- data/TODO +10 -0
- data/clientauth.c +605 -0
- data/conn.c +24 -1
- data/entry.c +9 -9
- data/extconf.rb +70 -29
- data/ldap.c +67 -0
- data/lib/ldap/control.rb +3 -3
- data/lib/ldap/ldif.rb +264 -269
- data/lib/ldap/schema.rb +39 -33
- data/mod.c +7 -3
- data/rbldap.h +8 -6
- data/test/cookbooks/apt/metadata.rb +13 -0
- data/test/cookbooks/apt/providers/repository.rb +73 -0
- data/test/cookbooks/apt/recipes/cacher-client.rb +44 -0
- data/test/cookbooks/apt/recipes/cacher.rb +45 -0
- data/test/cookbooks/apt/recipes/default.rb +50 -0
- data/test/cookbooks/apt/resources/repository.rb +30 -0
- data/test/cookbooks/nginx/attributes/default.rb +35 -0
- data/test/cookbooks/nginx/definitions/nginx_site.rb +35 -0
- data/test/cookbooks/nginx/metadata.rb +86 -0
- data/test/cookbooks/nginx/recipes/default.rb +56 -0
- data/test/cookbooks/nginx/recipes/source.rb +143 -0
- data/test/cookbooks/openldap/attributes/default.rb +61 -0
- data/test/cookbooks/openldap/metadata.rb +99 -0
- data/test/cookbooks/openldap/recipes/auth.rb +70 -0
- data/test/cookbooks/openldap/recipes/client.rb +28 -0
- data/test/cookbooks/openldap/recipes/default.rb +18 -0
- data/test/cookbooks/openldap/recipes/server.rb +110 -0
- data/test/cookbooks/postgresql/attributes/default.rb +68 -0
- data/test/cookbooks/postgresql/metadata.rb +15 -0
- data/test/cookbooks/postgresql/recipes/client.rb +27 -0
- data/test/cookbooks/postgresql/recipes/default.rb +20 -0
- data/test/cookbooks/postgresql/recipes/server.rb +36 -0
- data/test/cookbooks/postgresql/recipes/server_debian.rb +51 -0
- data/test/cookbooks/postgresql/recipes/server_redhat.rb +84 -0
- data/test/cookbooks/sqlite/metadata.rb +11 -0
- data/test/cookbooks/sqlite/recipes/default.rb +26 -0
- data/test/cookbooks/vagrant_main/recipes/default.rb +12 -0
- data/test/moz_cert.rb +105 -0
- data/test/setup.rb +2 -2
- data/win/wldap32.def +257 -0
- metadata +78 -55
data/lib/ldap/schema.rb
CHANGED
@@ -15,9 +15,9 @@ module LDAP
|
|
15
15
|
|
16
16
|
def initialize(entry)
|
17
17
|
if( entry )
|
18
|
-
|
19
|
-
|
20
|
-
|
18
|
+
entry.each do |key, vals|
|
19
|
+
self[key] = vals
|
20
|
+
end
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -32,14 +32,15 @@ module LDAP
|
|
32
32
|
# +at+. +at+ may be the string *MUST*, *MAY* or *SUP*.
|
33
33
|
#
|
34
34
|
def attr(oc,at)
|
35
|
-
self['objectClasses'].each
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
35
|
+
self['objectClasses'].each do |s|
|
36
|
+
if( s =~ /NAME\s+'#{oc}'/ )
|
37
|
+
case s
|
38
|
+
when /#{at}\s+\(([\w\d_\-\s\$]+)\)/i then return $1.split("$").collect{|attr| attr.strip}
|
39
|
+
when /#{at}\s+([\w\d_\-]+)/i then return $1.split("$").collect{|attr| attr.strip}
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
43
44
|
return nil
|
44
45
|
end
|
45
46
|
|
@@ -62,6 +63,7 @@ module LDAP
|
|
62
63
|
def sup(oc)
|
63
64
|
attr(oc, "SUP")
|
64
65
|
end
|
66
|
+
|
65
67
|
end
|
66
68
|
|
67
69
|
class Conn
|
@@ -76,23 +78,24 @@ module LDAP
|
|
76
78
|
#
|
77
79
|
# +sec+ and +usec+ can be used to specify a time-out for the search in
|
78
80
|
# seconds and microseconds, respectively.
|
79
|
-
#
|
81
|
+
#
|
80
82
|
def schema(base = nil, attrs = nil, sec = 0, usec = 0)
|
81
83
|
attrs ||= [
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
84
|
+
'objectClasses',
|
85
|
+
'attributeTypes',
|
86
|
+
'matchingRules',
|
87
|
+
'matchingRuleUse',
|
88
|
+
'dITStructureRules',
|
89
|
+
'dITContentRules',
|
90
|
+
'nameForms',
|
91
|
+
'ldapSyntaxes',
|
90
92
|
]
|
91
93
|
base ||= root_dse(['subschemaSubentry'], sec, usec)[0]['subschemaSubentry'][0]
|
92
94
|
base ||= 'cn=schema'
|
93
|
-
|
94
|
-
|
95
|
-
|
95
|
+
entries = search2(base, LDAP_SCOPE_BASE, '(objectClass=subschema)',
|
96
|
+
attrs, false, sec, usec)
|
97
|
+
|
98
|
+
return Schema.new(entries[0])
|
96
99
|
end
|
97
100
|
|
98
101
|
# Fetch the root DSE (DSA-specific Entry) for the connection. DSA stands
|
@@ -110,20 +113,23 @@ module LDAP
|
|
110
113
|
#
|
111
114
|
def root_dse(attrs = nil, sec = 0, usec = 0)
|
112
115
|
attrs ||= [
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
116
|
+
'subschemaSubentry',
|
117
|
+
'namingContexts',
|
118
|
+
'monitorContext',
|
119
|
+
'altServer',
|
120
|
+
'supportedControl',
|
121
|
+
'supportedExtension',
|
122
|
+
'supportedFeatures',
|
123
|
+
'supportedSASLMechanisms',
|
124
|
+
'supportedLDAPVersion',
|
122
125
|
]
|
123
126
|
|
124
127
|
entries = search2('', LDAP_SCOPE_BASE, '(objectClass=*)',
|
125
|
-
|
128
|
+
attrs, false, sec, usec)
|
129
|
+
|
126
130
|
return entries
|
127
131
|
end
|
132
|
+
|
128
133
|
end
|
134
|
+
|
129
135
|
end
|
data/mod.c
CHANGED
@@ -18,6 +18,7 @@ rb_ldap_mod_free (RB_LDAPMOD_DATA * data)
|
|
18
18
|
char **svals;
|
19
19
|
int i;
|
20
20
|
|
21
|
+
xfree(data->mod->mod_type);
|
21
22
|
if (data->mod->mod_op & LDAP_MOD_BVALUES)
|
22
23
|
{
|
23
24
|
bvals = data->mod->mod_vals.modv_bvals;
|
@@ -38,6 +39,7 @@ rb_ldap_mod_free (RB_LDAPMOD_DATA * data)
|
|
38
39
|
}
|
39
40
|
xfree (data->mod);
|
40
41
|
}
|
42
|
+
xfree (data);
|
41
43
|
}
|
42
44
|
|
43
45
|
static LDAPMod *
|
@@ -52,7 +54,8 @@ rb_ldap_new_mod (int mod_op, char *mod_type, char **modv_strvals)
|
|
52
54
|
|
53
55
|
mod = ALLOC_N (LDAPMod, 1);
|
54
56
|
mod->mod_op = mod_op;
|
55
|
-
mod->mod_type = mod_type;
|
57
|
+
mod->mod_type = ALLOC_N(char,strlen(mod_type) + 1);
|
58
|
+
strcpy(mod->mod_type, mod_type);
|
56
59
|
mod->mod_vals.modv_strvals = modv_strvals;
|
57
60
|
|
58
61
|
return mod;
|
@@ -83,7 +86,8 @@ rb_ldap_new_mod2 (int mod_op, char *mod_type, struct berval **modv_bvals)
|
|
83
86
|
|
84
87
|
mod = ALLOC_N (LDAPMod, 1);
|
85
88
|
mod->mod_op = mod_op;
|
86
|
-
mod->mod_type = mod_type;
|
89
|
+
mod->mod_type = ALLOC_N(char,strlen(mod_type) + 1);
|
90
|
+
strcpy(mod->mod_type, mod_type);
|
87
91
|
mod->mod_vals.modv_bvals = modv_bvals;
|
88
92
|
|
89
93
|
return mod;
|
@@ -148,7 +152,7 @@ rb_ldap_mod_initialize (int argc, VALUE argv[], VALUE self)
|
|
148
152
|
return Qnil;
|
149
153
|
|
150
154
|
mod_op = NUM2INT (op);
|
151
|
-
mod_type =
|
155
|
+
mod_type = RSTRING_PTR(type);
|
152
156
|
Check_Type (vals, T_ARRAY);
|
153
157
|
|
154
158
|
if (mod_op & LDAP_MOD_BVALUES)
|
data/rbldap.h
CHANGED
@@ -27,8 +27,8 @@
|
|
27
27
|
|
28
28
|
#define RB_LDAP_MAJOR_VERSION 0
|
29
29
|
#define RB_LDAP_MINOR_VERSION 9
|
30
|
-
#define RB_LDAP_PATCH_VERSION
|
31
|
-
#define RB_LDAP_VERSION "0.9.
|
30
|
+
#define RB_LDAP_PATCH_VERSION 12
|
31
|
+
#define RB_LDAP_VERSION "0.9.12"
|
32
32
|
|
33
33
|
#define LDAP_GET_OPT_MAX_BUFFER_SIZE (1024) /* >= sizeof(LDAPAPIInfo) */
|
34
34
|
|
@@ -140,13 +140,13 @@ VALUE rb_ldap_mod_vals (VALUE);
|
|
140
140
|
};
|
141
141
|
|
142
142
|
#define Check_LDAP_Result(err) { \
|
143
|
-
if( err != LDAP_SUCCESS && err != LDAP_SIZELIMIT_EXCEEDED ){ \
|
143
|
+
if( (err) != LDAP_SUCCESS && (err) != LDAP_SIZELIMIT_EXCEEDED ){ \
|
144
144
|
rb_raise(rb_eLDAP_ResultError, ldap_err2string(err)); \
|
145
145
|
} \
|
146
146
|
}
|
147
147
|
|
148
148
|
#define Check_LDAP_OPT_Result(err) { \
|
149
|
-
if( err != LDAP_OPT_SUCCESS ){ \
|
149
|
+
if( (err) != LDAP_OPT_SUCCESS ){ \
|
150
150
|
rb_raise(rb_eLDAP_ResultError, ldap_err2string(err)); \
|
151
151
|
} \
|
152
152
|
}
|
@@ -162,16 +162,18 @@ VALUE rb_ldap_mod_vals (VALUE);
|
|
162
162
|
RB_LDAPENTRY_DATA *ptr; \
|
163
163
|
Data_Get_Struct(obj, struct rb_ldapmsg_data, ptr); \
|
164
164
|
if( ! ptr->msg ){ \
|
165
|
+
VALUE value = rb_inspect(obj); \
|
165
166
|
rb_raise(rb_eLDAP_InvalidEntryError, "%s is not a valid entry", \
|
166
|
-
|
167
|
+
StringValuePtr(value)); \
|
167
168
|
}; \
|
168
169
|
}
|
169
170
|
|
170
171
|
#define GET_LDAPENTRY_DATA(obj,ptr) { \
|
171
172
|
Data_Get_Struct(obj, struct rb_ldapentry_data, ptr); \
|
172
173
|
if( ! ptr->msg ){ \
|
174
|
+
VALUE value = rb_inspect(obj); \
|
173
175
|
rb_raise(rb_eLDAP_InvalidEntryError, "%s is not a valid entry", \
|
174
|
-
|
176
|
+
StringValuePtr(value)); \
|
175
177
|
}; \
|
176
178
|
}
|
177
179
|
|
@@ -0,0 +1,13 @@
|
|
1
|
+
maintainer "Opscode, Inc."
|
2
|
+
maintainer_email "cookbooks@opscode.com"
|
3
|
+
license "Apache 2.0"
|
4
|
+
description "Configures apt and apt services and an LWRP for managing apt repositories"
|
5
|
+
long_description IO.read(File.join(File.dirname(__FILE__), 'README.md'))
|
6
|
+
version "1.2.0"
|
7
|
+
recipe "apt", "Runs apt-get update during compile phase and sets up preseed directories"
|
8
|
+
recipe "apt::cacher", "Set up an APT cache"
|
9
|
+
recipe "apt::cacher-client", "Client for the apt::cacher server"
|
10
|
+
|
11
|
+
%w{ ubuntu debian }.each do |os|
|
12
|
+
supports os
|
13
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Provider:: repository
|
4
|
+
#
|
5
|
+
# Copyright 2010-2011, Opscode, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
action :add do
|
21
|
+
unless ::File.exists?("/etc/apt/sources.list.d/#{new_resource.repo_name}-source.list")
|
22
|
+
Chef::Log.info "Adding #{new_resource.repo_name} repository to /etc/apt/sources.list.d/#{new_resource.repo_name}-source.list"
|
23
|
+
# add key
|
24
|
+
if new_resource.keyserver && new_resource.key
|
25
|
+
execute "install-key #{new_resource.key}" do
|
26
|
+
command "apt-key adv --keyserver #{new_resource.keyserver} --recv #{new_resource.key}"
|
27
|
+
action :nothing
|
28
|
+
end.run_action(:run)
|
29
|
+
elsif new_resource.key && (new_resource.key =~ /http/)
|
30
|
+
key_name = new_resource.key.split(/\//).last
|
31
|
+
remote_file "#{Chef::Config[:file_cache_path]}/#{key_name}" do
|
32
|
+
source new_resource.key
|
33
|
+
mode "0644"
|
34
|
+
action :nothing
|
35
|
+
end.run_action(:create_if_missing)
|
36
|
+
execute "install-key #{key_name}" do
|
37
|
+
command "apt-key add #{Chef::Config[:file_cache_path]}/#{key_name}"
|
38
|
+
action :nothing
|
39
|
+
end.run_action(:run)
|
40
|
+
end
|
41
|
+
# build our listing
|
42
|
+
repository = "deb"
|
43
|
+
repository = "deb-src" if new_resource.deb_src
|
44
|
+
repository = "# Created by the Chef apt_repository LWRP\n" + repository
|
45
|
+
repository += " #{new_resource.uri}"
|
46
|
+
repository += " #{new_resource.distribution}"
|
47
|
+
new_resource.components.each {|component| repository += " #{component}"}
|
48
|
+
# write out the file, replace it if it already exists
|
49
|
+
file "/etc/apt/sources.list.d/#{new_resource.repo_name}-source.list" do
|
50
|
+
owner "root"
|
51
|
+
group "root"
|
52
|
+
mode 0644
|
53
|
+
content repository + "\n"
|
54
|
+
action :nothing
|
55
|
+
end.run_action(:create)
|
56
|
+
execute "update package index" do
|
57
|
+
command "apt-get update"
|
58
|
+
ignore_failure true
|
59
|
+
action :nothing
|
60
|
+
end.run_action(:run)
|
61
|
+
new_resource.updated_by_last_action(true)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
|
65
|
+
action :remove do
|
66
|
+
if ::File.exists?("/etc/apt/sources.list.d/#{new_resource.repo_name}-source.list")
|
67
|
+
Chef::Log.info "Removing #{new_resource.repo_name} repository from /etc/apt/sources.list.d/"
|
68
|
+
file "/etc/apt/sources.list.d/#{new_resource.repo_name}-source.list" do
|
69
|
+
action :delete
|
70
|
+
end
|
71
|
+
new_resource.updated_by_last_action(true)
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Recipe:: cacher-client
|
4
|
+
#
|
5
|
+
# Copyright 2011, Opscode, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
#remove Acquire::http::Proxy lines from /etc/apt/apt.conf since we use 01proxy
|
21
|
+
#these are leftover from preseed installs
|
22
|
+
execute "Remove proxy from /etc/apt/apt.conf" do
|
23
|
+
command "sed --in-place '/^Acquire::http::Proxy/d' /etc/apt/apt.conf"
|
24
|
+
only_if "grep Acquire::http::Proxy /etc/apt/apt.conf"
|
25
|
+
end
|
26
|
+
|
27
|
+
servers = search(:node, 'recipes:apt\:\:cacher') || []
|
28
|
+
if servers.length > 0
|
29
|
+
Chef::Log.info("apt-cacher server found on #{servers[0]}.")
|
30
|
+
proxy = "Acquire::http::Proxy \"http://#{servers[0].ipaddress}:3142\";\n"
|
31
|
+
file "/etc/apt/apt.conf.d/01proxy" do
|
32
|
+
owner "root"
|
33
|
+
group "root"
|
34
|
+
mode "0644"
|
35
|
+
content proxy
|
36
|
+
action :create
|
37
|
+
end
|
38
|
+
else
|
39
|
+
Chef::Log.info("No apt-cacher server found.")
|
40
|
+
file "/etc/apt/apt.conf.d/01proxy" do
|
41
|
+
action :delete
|
42
|
+
only_if {File.exists?("/etc/apt/apt.conf.d/01proxy")}
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Recipe:: cacher
|
4
|
+
#
|
5
|
+
# Copyright 2008-2011, Opscode, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
package "apt-cacher" do
|
20
|
+
action :install
|
21
|
+
end
|
22
|
+
|
23
|
+
service "apt-cacher" do
|
24
|
+
supports :restart => true, :status => false
|
25
|
+
action [ :enable, :start ]
|
26
|
+
end
|
27
|
+
|
28
|
+
cookbook_file "/etc/apt-cacher/apt-cacher.conf" do
|
29
|
+
source "apt-cacher.conf"
|
30
|
+
owner "root"
|
31
|
+
group "root"
|
32
|
+
mode 0644
|
33
|
+
notifies :restart, resources(:service => "apt-cacher")
|
34
|
+
end
|
35
|
+
|
36
|
+
cookbook_file "/etc/default/apt-cacher" do
|
37
|
+
source "apt-cacher"
|
38
|
+
owner "root"
|
39
|
+
group "root"
|
40
|
+
mode 0644
|
41
|
+
notifies :restart, resources(:service => "apt-cacher")
|
42
|
+
end
|
43
|
+
|
44
|
+
#this will help seed the proxy
|
45
|
+
include_recipe "apt::cacher-client"
|
@@ -0,0 +1,50 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Recipe:: default
|
4
|
+
#
|
5
|
+
# Copyright 2008-2011, Opscode, Inc.
|
6
|
+
# Copyright 2009, Bryan McLellan <btm@loftninjas.org>
|
7
|
+
#
|
8
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
9
|
+
# you may not use this file except in compliance with the License.
|
10
|
+
# You may obtain a copy of the License at
|
11
|
+
#
|
12
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
13
|
+
#
|
14
|
+
# Unless required by applicable law or agreed to in writing, software
|
15
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
16
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
17
|
+
# See the License for the specific language governing permissions and
|
18
|
+
# limitations under the License.
|
19
|
+
#
|
20
|
+
|
21
|
+
# Run apt-get update to create the stamp file
|
22
|
+
execute "apt-get-update" do
|
23
|
+
command "apt-get update"
|
24
|
+
ignore_failure true
|
25
|
+
not_if do ::File.exists?('/var/lib/apt/periodic/update-success-stamp') end
|
26
|
+
action :nothing
|
27
|
+
end
|
28
|
+
|
29
|
+
# provides /var/lib/apt/periodic/update-success-stamp on apt-get update
|
30
|
+
package "update-notifier-common" do
|
31
|
+
notifies :run, resources(:execute => "apt-get-update"), :immediately
|
32
|
+
end
|
33
|
+
|
34
|
+
execute "apt-get-update-periodic" do
|
35
|
+
command "apt-get update"
|
36
|
+
ignore_failure true
|
37
|
+
only_if do
|
38
|
+
File.exists?('/var/lib/apt/periodic/update-success-stamp') &&
|
39
|
+
File.mtime('/var/lib/apt/periodic/update-success-stamp') < Time.now - 86400
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
%w{/var/cache/local /var/cache/local/preseeding}.each do |dirname|
|
44
|
+
directory dirname do
|
45
|
+
owner "root"
|
46
|
+
group "root"
|
47
|
+
mode 0644
|
48
|
+
action :create
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
#
|
2
|
+
# Cookbook Name:: apt
|
3
|
+
# Resource:: repository
|
4
|
+
#
|
5
|
+
# Copyright 2010-2011, Opscode, Inc.
|
6
|
+
#
|
7
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
# you may not use this file except in compliance with the License.
|
9
|
+
# You may obtain a copy of the License at
|
10
|
+
#
|
11
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
#
|
13
|
+
# Unless required by applicable law or agreed to in writing, software
|
14
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
# See the License for the specific language governing permissions and
|
17
|
+
# limitations under the License.
|
18
|
+
#
|
19
|
+
|
20
|
+
actions :add, :remove
|
21
|
+
|
22
|
+
#name of the repo, used for source.list filename
|
23
|
+
attribute :repo_name, :kind_of => String, :name_attribute => true
|
24
|
+
attribute :uri, :kind_of => String
|
25
|
+
attribute :distribution, :kind_of => String
|
26
|
+
attribute :components, :kind_of => Array, :default => []
|
27
|
+
#whether or not to add the repository as a source repo as well
|
28
|
+
attribute :deb_src, :default => false
|
29
|
+
attribute :keyserver, :kind_of => String, :default => nil
|
30
|
+
attribute :key, :kind_of => String, :default => nil
|