depengine 0.0.12 → 0.0.13

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/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