depengine 0.0.12 → 0.0.13

Sign up to get free protection for your applications and to get access to all the features.
data/depengine.gemspec CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |s|
23
23
  s.add_dependency "pony"
24
24
  s.add_dependency "ptools"
25
25
  s.add_dependency "radius"
26
+ s.add_dependency "expect4r"
26
27
 
27
28
  s.add_development_dependency "rspec", "~> 2"
28
29
 
@@ -166,6 +166,15 @@ module Deployment
166
166
  template.parse_template(source, content, target, options)
167
167
  end
168
168
 
169
+ def parse_erb_template(source, target, content, options={})
170
+ template = Processor::Template.new
171
+ template.cdb = @cdb
172
+ template.basepath = options[:basepath] || $recipe_config[:deploy_home]
173
+ options[:excludes] = [] if options[:excludes].nil?
174
+ options[:excludes] << '.svn'
175
+ template.parse_erb_template(source, content, target, options)
176
+ end
177
+
169
178
  def get_all_config_parameters
170
179
  # merge cdb data
171
180
  $recipe_config.merge @cdb
@@ -204,6 +213,21 @@ module Deployment
204
213
  $recipe_config[:application_name] ), key, value)
205
214
  end
206
215
 
216
+ def set_cdb_parameter_4_app(module_name, app_name, key, value)
217
+ Helper.validates_presence_of $recipe_config['cdb_host'], \
218
+ "cdb_host parameter is missing"
219
+ Helper.validates_presence_of $recipe_config['cdb_context'], \
220
+ "cdb_context parameter is missing"
221
+
222
+ cdb = Provider::CDB.new
223
+ cdb.protocol = 'http'
224
+ cdb.host = $recipe_config['cdb_host']
225
+ cdb.context = $recipe_config['cdb_context']
226
+ cdb.env = $recipe_config['ENVIRONMENT']
227
+
228
+ cdb.set_parameter(File.join( module_name, app_name ), key, value)
229
+ end
230
+
207
231
  def get_dir_from_samba(source, target)
208
232
  Helper.validates_presence_of @cdb['samba_repository'], "Samba repository not set"
209
233
 
@@ -441,6 +465,9 @@ module Deployment
441
465
 
442
466
  properties = Processor::Properties.new
443
467
  properties.properties_hash = @cdb[patch_set]
468
+ ### add db_endpoint
469
+ properties.properties_hash['db_endpoint_1'] = @cdb['db_endpoint_1']
470
+ properties.properties_hash['db_endpoint_2'] = @cdb['db_endpoint_2']
444
471
  properties.assigner = assigner
445
472
  properties.patch(File.join($recipe_config[:deploy_home], source), \
446
473
  File.join($recipe_config[:deploy_home], target, \
@@ -462,6 +489,9 @@ module Deployment
462
489
  properties = Processor::Properties.new
463
490
  properties.assigner = assigner
464
491
  properties.properties_hash = @cdb[patch_set]
492
+ ### add db_endpoint
493
+ properties.properties_hash['db_endpoint_1'] = @cdb['db_endpoint_1']
494
+ properties.properties_hash['db_endpoint_2'] = @cdb['db_endpoint_2']
465
495
  properties.substitute(File.join($recipe_config[:deploy_home], source), \
466
496
  File.join($recipe_config[:deploy_home], target, \
467
497
  File.basename(source)))
@@ -485,7 +515,9 @@ module Deployment
485
515
  properties = Processor::Properties.new
486
516
  properties.assigner = assigner
487
517
  properties.properties_hash = @cdb[patch_set]
488
-
518
+ ### add db_endpoint
519
+ properties.properties_hash['db_endpoint_1'] = @cdb['db_endpoint_1']
520
+ properties.properties_hash['db_endpoint_2'] = @cdb['db_endpoint_2']
489
521
  properties.substitute_r(source_path, target_path)
490
522
  end
491
523
 
@@ -0,0 +1,127 @@
1
+ module Processor
2
+ class Erb_template
3
+ include Processor
4
+ attr_accessor :basepath
5
+ attr_writer :cdb
6
+
7
+ # Render a template and write the output to a file or directory
8
+ # structure under 'basepath'
9
+ def parse_template(template_source, content, outdir, options={})
10
+ Helper.validates_presence_of basepath, "Basepath not set for template engine"
11
+ # expand basepath
12
+ self.basepath = File.expand_path basepath
13
+
14
+ if File.file?( File.join( basepath, template_source ) )
15
+ source_root_path = File.join( basepath, File.dirname(template_source) )
16
+ single_file = File.join( basepath, template_source )
17
+ else
18
+ # source is a directory
19
+ source_root_path = File.join( basepath, template_source)
20
+ single_file = nil
21
+ end
22
+ target_root_path = File.join( basepath, outdir )
23
+ target_path = target_root_path
24
+
25
+ Find.find( single_file || source_root_path ) do |path|
26
+ # next if we found ourself
27
+ next if path == source_root_path
28
+
29
+ sub_dir = File.join( File.dirname( path ).split(/\//) - \
30
+ source_root_path.split(/\//) )
31
+ target_path = File.join( target_root_path, sub_dir )
32
+ target = File.join( target_path, File.basename( path ) )
33
+
34
+ if not options[:excludes].nil?
35
+ options[:excludes].each do |exclude|
36
+ if target.include? exclude
37
+ $log.writer.debug "Skip template #{target}"
38
+ Find.prune
39
+ next
40
+ end
41
+ end
42
+ end
43
+
44
+ if File.directory? path
45
+ if not File.directory? target
46
+ FileUtils.mkdir_p( target )
47
+ $log.writer.debug "Create directory #{target}"
48
+ end
49
+ else
50
+ target_file = File.join( target_path, \
51
+ File.basename(target, ".erb"))
52
+ begin
53
+ if not File.binary? path and not File.zero? path
54
+ writer = File.new(target_file, 'w')
55
+ # writer.write(parse(path, content))
56
+ writer.write(ERB.new(File.read(path)).result())
57
+ writer.close if not writer.nil?
58
+ writer = nil
59
+ else
60
+ FileUtils.cp(path, File.expand_path(target_file))
61
+ end
62
+ rescue Exception => e
63
+ $log.writer.error "Can not write output from template to #{target_file}"
64
+ $log.writer.error e.message
65
+ exit 1
66
+ end
67
+ end
68
+ end
69
+ end
70
+
71
+ # This function returns the output of a parsed template, 'template' can be
72
+ # a filename or a String.
73
+ def self.parse(template, content)
74
+ $log.writer.debug "Parse Template #{template}"
75
+ Template.new.parse(template, content)
76
+ end
77
+
78
+ def parse(template, content)
79
+ context = load_tags(content, @cdb)
80
+ begin
81
+ parser = Radius::Parser.new(context, :tag_prefix => 't')
82
+ template_content = ""
83
+ result = ""
84
+ if File.file? template
85
+ read_mode = ""
86
+ if RUBY_VERSION < '1.9'
87
+ read_mode = 'r'
88
+ else
89
+ read_mode = 'rb'
90
+ end
91
+ File.open(template, read_mode) do |f|
92
+ c = ""
93
+ f.ungetc c unless (c = f.getc)=="\uFEFF" # remove BOM, if present
94
+ while line = f.gets
95
+ template_content << line
96
+ end
97
+ end
98
+ else
99
+ template_content = template
100
+ end
101
+
102
+ result = parser.parse(template_content)
103
+ nested_result_1 = ""
104
+ nested_result_2 = result
105
+ nested_loop = 0
106
+ while( nested_result_1 != nested_result_2 )
107
+ if nested_loop >= 100
108
+ $log.writer.error "Template stack overflow, too many nested tags"
109
+ exit 1
110
+ end
111
+ nested_result_1 = parser.parse(nested_result_2)
112
+ nested_result_2 = parser.parse(nested_result_1)
113
+
114
+ nested_loop = nested_loop + 1
115
+ end
116
+ result = nested_result_2
117
+ rescue Exception => e
118
+ $log.writer.error "Error in template processing: #{template}"
119
+ $log.writer.error e.message
120
+ exit 1
121
+ end
122
+
123
+ result
124
+ end
125
+ end
126
+ end
127
+
@@ -61,6 +61,13 @@ module Processor
61
61
  else
62
62
  entry = entry.sub(keyvalue[1].strip, \
63
63
  properties_hash[keyvalue[0].strip])
64
+ ### patch global variable
65
+ if not entry.nil? and entry.include?('<t:db_endpoint_1/>')
66
+ entry = entry.sub(/<t\:db_endpoint_1\/>/, properties_hash['db_endpoint_1'])
67
+ end
68
+ if not entry.nil? and entry.include?('<t:db_endpoint_2/>')
69
+ entry = entry.sub(/<t\:db_endpoint_2\/>/, properties_hash['db_endpoint_2'])
70
+ end
64
71
  end
65
72
  end
66
73
  end
@@ -93,6 +100,14 @@ module Processor
93
100
  properties_hash.keys.each { |hashkey|
94
101
  hashkey = hashkey.to_s
95
102
  entry = entry.sub(hashkey, properties_hash[hashkey].to_s)
103
+ ### patch global variable
104
+ if not entry.nil? and entry.include?('<t:db_endpoint_1/>')
105
+ entry = entry.sub(/<t\:db_endpoint_1\/>/, properties_hash['db_endpoint_1'])
106
+ end
107
+ if not entry.nil? and entry.include?('<t:db_endpoint_2/>')
108
+ entry = entry.sub(/<t\:db_endpoint_2\/>/, properties_hash['db_endpoint_2'])
109
+ end
110
+
96
111
  }
97
112
  target_file.puts entry
98
113
  }
@@ -31,12 +31,15 @@ module Publisher
31
31
  exit 1
32
32
  end
33
33
 
34
- ch.on_data do |ch, data|
35
- if data.empty?
36
- $log.writer.debug "Command successfully executed"
37
- else
38
- $log.writer.debug data
39
- end
34
+ ch.on_data do |ch, type, data|
35
+ raise "could not execute command" if type.nil?
36
+ $log.writer.info type
37
+ $log.writer.info data
38
+ # if type.nil?
39
+ # $log.writer.debug "Command successfully executed"
40
+ # else
41
+ # $log.writer.debug data
42
+ # end
40
43
  end
41
44
 
42
45
  ch.on_extended_data do |ch, type, data|
@@ -1,3 +1,3 @@
1
1
  module Depengine
2
- VERSION = "0.0.12"
2
+ VERSION = "0.0.13"
3
3
  end
metadata CHANGED
@@ -1,171 +1,177 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: depengine
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.12
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ hash: 5
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 13
10
+ version: 0.0.13
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Team Automatisierung
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2013-04-09 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
17
+
18
+ date: 2013-08-14 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
15
22
  name: json
16
- requirement: !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
19
- - - ~>
20
- - !ruby/object:Gem::Version
21
- version: '1.4'
22
- type: :runtime
23
23
  prerelease: false
24
- version_requirements: !ruby/object:Gem::Requirement
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
25
  none: false
26
- requirements:
26
+ requirements:
27
27
  - - ~>
28
- - !ruby/object:Gem::Version
29
- version: '1.4'
30
- - !ruby/object:Gem::Dependency
31
- name: net-ssh
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
28
+ - !ruby/object:Gem::Version
29
+ hash: 7
30
+ segments:
31
+ - 1
32
+ - 4
33
+ version: "1.4"
38
34
  type: :runtime
35
+ version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: net-ssh
39
38
  prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
39
+ requirement: &id002 !ruby/object:Gem::Requirement
41
40
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
- - !ruby/object:Gem::Dependency
47
- name: net-sftp
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ! '>='
52
- - !ruby/object:Gem::Version
53
- version: '0'
41
+ requirements:
42
+ - - ">="
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 0
47
+ version: "0"
54
48
  type: :runtime
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: net-sftp
55
52
  prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
53
+ requirement: &id003 !ruby/object:Gem::Requirement
57
54
  none: false
58
- requirements:
59
- - - ! '>='
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- - !ruby/object:Gem::Dependency
63
- name: net-scp
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ! '>='
68
- - !ruby/object:Gem::Version
69
- version: '0'
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
70
62
  type: :runtime
63
+ version_requirements: *id003
64
+ - !ruby/object:Gem::Dependency
65
+ name: net-scp
71
66
  prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
67
+ requirement: &id004 !ruby/object:Gem::Requirement
73
68
  none: false
74
- requirements:
75
- - - ! '>='
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- - !ruby/object:Gem::Dependency
79
- name: log4r
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - ! '>='
84
- - !ruby/object:Gem::Version
85
- version: '0'
69
+ requirements:
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ hash: 3
73
+ segments:
74
+ - 0
75
+ version: "0"
86
76
  type: :runtime
77
+ version_requirements: *id004
78
+ - !ruby/object:Gem::Dependency
79
+ name: log4r
87
80
  prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
81
+ requirement: &id005 !ruby/object:Gem::Requirement
89
82
  none: false
90
- requirements:
91
- - - ! '>='
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: pony
96
- requirement: !ruby/object:Gem::Requirement
97
- none: false
98
- requirements:
99
- - - ! '>='
100
- - !ruby/object:Gem::Version
101
- version: '0'
83
+ requirements:
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ hash: 3
87
+ segments:
88
+ - 0
89
+ version: "0"
102
90
  type: :runtime
91
+ version_requirements: *id005
92
+ - !ruby/object:Gem::Dependency
93
+ name: pony
103
94
  prerelease: false
104
- version_requirements: !ruby/object:Gem::Requirement
95
+ requirement: &id006 !ruby/object:Gem::Requirement
105
96
  none: false
106
- requirements:
107
- - - ! '>='
108
- - !ruby/object:Gem::Version
109
- version: '0'
110
- - !ruby/object:Gem::Dependency
111
- name: ptools
112
- requirement: !ruby/object:Gem::Requirement
113
- none: false
114
- requirements:
115
- - - ! '>='
116
- - !ruby/object:Gem::Version
117
- version: '0'
97
+ requirements:
98
+ - - ">="
99
+ - !ruby/object:Gem::Version
100
+ hash: 3
101
+ segments:
102
+ - 0
103
+ version: "0"
118
104
  type: :runtime
105
+ version_requirements: *id006
106
+ - !ruby/object:Gem::Dependency
107
+ name: ptools
119
108
  prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
109
+ requirement: &id007 !ruby/object:Gem::Requirement
121
110
  none: false
122
- requirements:
123
- - - ! '>='
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
111
+ requirements:
112
+ - - ">="
113
+ - !ruby/object:Gem::Version
114
+ hash: 3
115
+ segments:
116
+ - 0
117
+ version: "0"
118
+ type: :runtime
119
+ version_requirements: *id007
120
+ - !ruby/object:Gem::Dependency
127
121
  name: radius
128
- requirement: !ruby/object:Gem::Requirement
122
+ prerelease: false
123
+ requirement: &id008 !ruby/object:Gem::Requirement
129
124
  none: false
130
- requirements:
131
- - - ! '>='
132
- - !ruby/object:Gem::Version
133
- version: '0'
125
+ requirements:
126
+ - - ">="
127
+ - !ruby/object:Gem::Version
128
+ hash: 3
129
+ segments:
130
+ - 0
131
+ version: "0"
134
132
  type: :runtime
133
+ version_requirements: *id008
134
+ - !ruby/object:Gem::Dependency
135
+ name: expect4r
135
136
  prerelease: false
136
- version_requirements: !ruby/object:Gem::Requirement
137
+ requirement: &id009 !ruby/object:Gem::Requirement
137
138
  none: false
138
- requirements:
139
- - - ! '>='
140
- - !ruby/object:Gem::Version
141
- version: '0'
142
- - !ruby/object:Gem::Dependency
139
+ requirements:
140
+ - - ">="
141
+ - !ruby/object:Gem::Version
142
+ hash: 3
143
+ segments:
144
+ - 0
145
+ version: "0"
146
+ type: :runtime
147
+ version_requirements: *id009
148
+ - !ruby/object:Gem::Dependency
143
149
  name: rspec
144
- requirement: !ruby/object:Gem::Requirement
145
- none: false
146
- requirements:
147
- - - ~>
148
- - !ruby/object:Gem::Version
149
- version: '2'
150
- type: :development
151
150
  prerelease: false
152
- version_requirements: !ruby/object:Gem::Requirement
151
+ requirement: &id010 !ruby/object:Gem::Requirement
153
152
  none: false
154
- requirements:
153
+ requirements:
155
154
  - - ~>
156
- - !ruby/object:Gem::Version
157
- version: '2'
155
+ - !ruby/object:Gem::Version
156
+ hash: 7
157
+ segments:
158
+ - 2
159
+ version: "2"
160
+ type: :development
161
+ version_requirements: *id010
158
162
  description: Simply generates Depengine text.
159
- email:
163
+ email:
160
164
  - team-automatisierung@sinnerschrader.com
161
- executables:
165
+ executables:
162
166
  - de
163
167
  - depengine
164
168
  - depengine.sh
165
169
  - cdb_crypt
166
170
  extensions: []
171
+
167
172
  extra_rdoc_files: []
168
- files:
173
+
174
+ files:
169
175
  - .gitignore
170
176
  - Gemfile
171
177
  - Gemfile.lock
@@ -2654,6 +2660,7 @@ files:
2654
2660
  - lib/depengine/helper/validations.rb
2655
2661
  - lib/depengine/helper/yaml.rb
2656
2662
  - lib/depengine/log/log.rb
2663
+ - lib/depengine/processor/erb_template.rb
2657
2664
  - lib/depengine/processor/fileops.rb
2658
2665
  - lib/depengine/processor/properties.rb
2659
2666
  - lib/depengine/processor/sed.rb
@@ -2699,28 +2706,61 @@ files:
2699
2706
  - spec/watchr
2700
2707
  - spec/zip/source/dummy.zip
2701
2708
  - spec/zip_spec.rb
2709
+ has_rdoc: true
2702
2710
  homepage: http://www.sinnerschrader.com
2703
2711
  licenses: []
2712
+
2704
2713
  post_install_message:
2705
2714
  rdoc_options: []
2706
- require_paths:
2715
+
2716
+ require_paths:
2707
2717
  - lib
2708
- required_ruby_version: !ruby/object:Gem::Requirement
2718
+ required_ruby_version: !ruby/object:Gem::Requirement
2709
2719
  none: false
2710
- requirements:
2711
- - - ! '>='
2712
- - !ruby/object:Gem::Version
2720
+ requirements:
2721
+ - - ">="
2722
+ - !ruby/object:Gem::Version
2723
+ hash: 57
2724
+ segments:
2725
+ - 1
2726
+ - 8
2727
+ - 7
2713
2728
  version: 1.8.7
2714
- required_rubygems_version: !ruby/object:Gem::Requirement
2729
+ required_rubygems_version: !ruby/object:Gem::Requirement
2715
2730
  none: false
2716
- requirements:
2717
- - - ! '>='
2718
- - !ruby/object:Gem::Version
2719
- version: '0'
2731
+ requirements:
2732
+ - - ">="
2733
+ - !ruby/object:Gem::Version
2734
+ hash: 3
2735
+ segments:
2736
+ - 0
2737
+ version: "0"
2720
2738
  requirements: []
2739
+
2721
2740
  rubyforge_project:
2722
- rubygems_version: 1.8.24
2741
+ rubygems_version: 1.3.7
2723
2742
  signing_key:
2724
2743
  specification_version: 3
2725
2744
  summary: Depengine generator
2726
- test_files: []
2745
+ test_files:
2746
+ - spec/cdb_spec.rb
2747
+ - spec/deployhelper_spec.rb
2748
+ - spec/dweb_spec.rb
2749
+ - spec/fileops_spec.rb
2750
+ - spec/helper_spec.rb
2751
+ - spec/log_spec.rb
2752
+ - spec/logs/log_spec.log
2753
+ - spec/mail_spec.rb
2754
+ - spec/properties_spec.rb
2755
+ - spec/repository_spec.rb
2756
+ - spec/ssh_spec.rb
2757
+ - spec/template_spec.rb
2758
+ - spec/templates/base/sub1/single.tpl
2759
+ - spec/templates/base/sub2/multi1.tpl
2760
+ - spec/templates/base/sub2/multi2.tpl
2761
+ - spec/templates/base/sub2/multi3.tpl
2762
+ - spec/templates/single.tpl
2763
+ - spec/templates/single_hash.tpl
2764
+ - spec/watchr
2765
+ - spec/zip/source/dummy.zip
2766
+ - spec/zip_spec.rb