mofa 0.2.13 → 0.2.14
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/mofa/cli.rb +3 -2
- data/lib/mofa/hostlist.rb +20 -12
- data/lib/mofa/version.rb +1 -1
- metadata +1 -1
data/lib/mofa/cli.rb
CHANGED
@@ -17,6 +17,7 @@ module Mofa
|
|
17
17
|
|
18
18
|
desc 'provision <cookbook>', 'provisions Targethost(s) using a given cookbook.'
|
19
19
|
method_option :target, :type => :string, :aliases => '-t'
|
20
|
+
method_option :concrete_target, :type => :string, :aliases => '-T'
|
20
21
|
method_option :runlist, :type => :string, :aliases => '-o'
|
21
22
|
method_option :service_hostlist_url, :type => :string
|
22
23
|
|
@@ -26,11 +27,11 @@ module Mofa
|
|
26
27
|
cookbook_name_or_path ||= '.'
|
27
28
|
|
28
29
|
target_filter = options[:target]
|
29
|
-
target_filter ||= Mofa::Config.config['profiles']['default']['target']
|
30
|
+
#target_filter ||= Mofa::Config.config['profiles']['default']['target']
|
30
31
|
|
31
32
|
token = MofaCmd.generate_token
|
32
33
|
|
33
|
-
hostlist = Hostlist.create(target_filter, options[:service_hostlist_url])
|
34
|
+
hostlist = Hostlist.create(target_filter, options[:service_hostlist_url], options[:concrete_target])
|
34
35
|
cookbook = Cookbook.create(cookbook_name_or_path, token)
|
35
36
|
runlist_map = RunlistMap.create(cookbook, hostlist, token, options[:runlist])
|
36
37
|
attributes_map = AttributesMap.create(cookbook, hostlist, token, options[:runlist], options[:attributes])
|
data/lib/mofa/hostlist.rb
CHANGED
@@ -7,17 +7,18 @@ class Hostlist
|
|
7
7
|
attr_accessor :filter
|
8
8
|
attr_accessor :service_host
|
9
9
|
attr_accessor :service_url
|
10
|
-
attr_accessor :filter
|
11
10
|
attr_accessor :api_key
|
11
|
+
attr_accessor :concrete_target
|
12
12
|
|
13
|
-
def self.create(filter = nil, service_hostlist_url = nil)
|
13
|
+
def self.create(filter = nil, service_hostlist_url = nil, concrete_target = nil)
|
14
14
|
hl = Hostlist.new
|
15
|
-
filter
|
15
|
+
filter = Mofa::Config.config['service_hostlist_default_filter'] if concrete_target.nil? && filter.nil?
|
16
16
|
service_hostlist_url ||= Mofa::Config.config['service_hostlist_url']
|
17
17
|
hl.filter = filter
|
18
18
|
hl.service_host = Mofa::Config.config['service_hostlist_url'].gsub(/^http:\/\//, '').gsub(/\/.*$/, '').gsub(/:.*$/, '')
|
19
19
|
hl.service_url = service_hostlist_url
|
20
20
|
hl.api_key = Mofa::Config.config['service_hostlist_api_key']
|
21
|
+
hl.concrete_target = concrete_target
|
21
22
|
hl
|
22
23
|
end
|
23
24
|
|
@@ -29,8 +30,14 @@ class Hostlist
|
|
29
30
|
Hostlist::get_shortname(hostname).gsub(/\d+$/, '')
|
30
31
|
end
|
31
32
|
|
33
|
+
def has_concrete_target
|
34
|
+
return (@concrete_target.nil?) ? false : true
|
35
|
+
end
|
36
|
+
|
32
37
|
def retrieve
|
33
38
|
case
|
39
|
+
when has_concrete_target
|
40
|
+
@list = [@concrete_target]
|
34
41
|
when @service_url.match(/^http/)
|
35
42
|
fail "Hostlist Service not reachable! (cannot ping #{service_host})" unless up?
|
36
43
|
response = RestClient.get(@service_url, {:params => {:key => api_key}})
|
@@ -59,16 +66,17 @@ class Hostlist
|
|
59
66
|
end
|
60
67
|
|
61
68
|
def apply_filter
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
69
|
+
unless @filter.nil?
|
70
|
+
if @filter[0] == '/' && @filter[-1] == '/' && @filter.length > 2
|
71
|
+
regex = @filter[1..-2]
|
72
|
+
else
|
73
|
+
# building matcher
|
74
|
+
regex = @filter.gsub(/\*/, '__ASTERISK__')
|
75
|
+
regex = Regexp.escape(regex).gsub(/__ASTERISK__/, '.*')
|
76
|
+
regex = '^' + regex + '$'
|
77
|
+
end
|
78
|
+
@list.select! { |hostname| hostname.match(regex) }
|
70
79
|
end
|
71
|
-
@list.select! { |hostname| hostname.match(regex) }
|
72
80
|
end
|
73
81
|
|
74
82
|
def sort_by_domainname
|
data/lib/mofa/version.rb
CHANGED