bosh-template 2.1.0 → 2.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 85722b0330f29047967d4ca4720f426ae91bb189
4
- data.tar.gz: 8e2c8efbda1cc38181caa059aeed914af9e633f4
2
+ SHA256:
3
+ metadata.gz: 01d69552923f4dfd1902462b47700dafdd64c091776af13857184a8cb965ef2d
4
+ data.tar.gz: 593d53fe6d34c009da3b713d8ea24c66e46c73798417d74b80929b065cc34a0c
5
5
  SHA512:
6
- metadata.gz: 5e98e351adac155ec9972e51b440680c19a3e4c703c270c2dfccd7ad597e5117fcabf8c2688a2bf08694d47d36155d6fd8e5f9a06e6b06f27beaf120b9281aa6
7
- data.tar.gz: 8a4ad0c89aa5d22e7666ffc6a20a8aa066b01197855a1b89e8fb1b47b1f9a3f5fc7b81dcd85c9232342362735c534bd28792a121c2a335aaca4f5d5aba7bc4eb
6
+ metadata.gz: ab2f789ecfd531efa14e2620770b8ac14b73a29c7b1fa47072a27f06e3b9f1262c5035e93f26f975e759e5f4400b1432ee5477fc696a4fad9df849d753e36c26
7
+ data.tar.gz: 435a6311b59e22e6849c37409d4e72613260387a7861fb5324ee4ca875e73c0e5ab630f9e3c4265025a3766cf8829a378a3229a2a1a40ea56d58ed34e3f634f5
data/README.md CHANGED
@@ -21,19 +21,21 @@ When you create your own release, you can likewise create a tests folder in your
21
21
  ```ruby
22
22
  let(:job) {release.job('JOB-NAME')} # e.g. 'web-server;
23
23
  let(:template) {job.template('PATH-TO-TEMPLATE')} # e.g. 'config/config-with-nested'
24
- let(:manifest) {
25
- 'cert' => '----- BEGIN ... -----',
26
- 'port' => 42,
27
- }
24
+ let(:manifest) do
25
+ {
26
+ 'cert' => '----- BEGIN ... -----',
27
+ 'port' => 42,
28
+ }
29
+ end
28
30
  let(:instance) { InstanceSpec.new(name:'instance-name', az: 'az1', bootstrap: true) }
29
31
  let(:link_instance) { InstanceSpec.new(name:'link-instance-name', az: 'az2') }
30
- let(:link_properties){
31
- 'link-key' => 'link-value',
32
- }
32
+ let(:link_properties) do
33
+ { 'link-key' => 'link-value' }
34
+ end
33
35
  let(:link) { Link.new(name:'link-name', instances:[link_instance], properties: link_properties)}
34
36
 
35
37
 
36
38
  rendered_template = JSON.parse(template.render(manifest, spec: instance, consumes: [link]))
37
39
  ```
38
40
 
39
- And then check that their template rendered as they expected.
41
+ And then check that their template rendered as they expected.
@@ -51,9 +51,16 @@ module Bosh
51
51
  @links = spec['links'] || {}
52
52
  end
53
53
 
54
+ def ==(other)
55
+ public_members = %w[spec raw_properties name index properties]
56
+ public_members.all? do |member|
57
+ other.respond_to?(member) && send(member) == other.send(member)
58
+ end
59
+ end
60
+
54
61
  # @return [Binding] Template binding
55
62
  def get_binding
56
- binding.taint
63
+ binding
57
64
  end
58
65
 
59
66
  # Property lookup helper
@@ -154,14 +161,24 @@ module Bosh
154
161
  encoder_to_inject = @dns_encoder
155
162
  end
156
163
 
157
- return EvaluationLink.new(
164
+ group_name = link_spec['instance_group']
165
+ group_type = 'instance-group'
166
+
167
+ if link_spec.fetch('use_link_dns_names', false)
168
+ group_name = link_spec['group_name']
169
+ group_type = 'link'
170
+ end
171
+
172
+ EvaluationLink.new(
158
173
  link_instances,
159
174
  link_spec['properties'],
160
- link_spec['instance_group'],
175
+ group_name,
176
+ group_type,
161
177
  link_spec['default_network'],
162
178
  link_spec['deployment_name'],
163
179
  link_spec['domain'],
164
180
  encoder_to_inject,
181
+ link_spec.fetch('use_short_dns_addresses', false),
165
182
  )
166
183
  end
167
184
 
@@ -8,14 +8,26 @@ module Bosh
8
8
  attr_reader :instances
9
9
  attr_reader :properties
10
10
 
11
- def initialize(instances, properties, instance_group, default_network, deployment_name, root_domain, dns_encoder)
11
+ def initialize(
12
+ instances,
13
+ properties,
14
+ group_name,
15
+ group_type,
16
+ default_network,
17
+ deployment_name,
18
+ root_domain,
19
+ dns_encoder,
20
+ use_short_dns
21
+ )
12
22
  @instances = instances
13
23
  @properties = properties
14
- @instance_group = instance_group
24
+ @group_name = group_name
25
+ @group_type = group_type
15
26
  @default_network = default_network
16
27
  @deployment_name = deployment_name
17
28
  @root_domain = root_domain
18
29
  @dns_encoder = dns_encoder
30
+ @use_short_dns = use_short_dns
19
31
  end
20
32
 
21
33
  def p(*args)
@@ -27,31 +39,34 @@ module Bosh
27
39
  end
28
40
 
29
41
  return args[1] if args.length == 2
30
- raise UnknownProperty.new(names)
42
+
43
+ raise UnknownProperty, names
31
44
  end
32
45
 
33
46
  def if_p(*names)
34
47
  values = names.map do |name|
35
48
  value = lookup_property(@properties, name)
36
49
  return Bosh::Template::EvaluationContext::ActiveElseBlock.new(self) if value.nil?
50
+
37
51
  value
38
52
  end
39
53
 
40
- yield *values
54
+ yield(*values)
55
+
41
56
  Bosh::Template::EvaluationContext::InactiveElseBlock.new
42
57
  end
43
58
 
44
59
  def address(criteria = {})
45
- raise NotImplementedError.new('link.address requires bosh director') if @dns_encoder.nil?
60
+ raise NotImplementedError, 'link.address requires bosh director' if @dns_encoder.nil?
46
61
 
47
62
  full_criteria = criteria.merge(
48
- instance_group: @instance_group,
63
+ group_name: @group_name,
64
+ group_type: @group_type,
49
65
  default_network: @default_network,
50
66
  deployment_name: @deployment_name,
51
67
  root_domain: @root_domain,
52
68
  )
53
-
54
- @dns_encoder.encode_query(full_criteria)
69
+ @dns_encoder.encode_query(full_criteria, @use_short_dns)
55
70
  end
56
71
  end
57
72
  end
@@ -32,19 +32,21 @@ module Bosh
32
32
  end
33
33
 
34
34
  return args[1] if args.length == 2
35
- raise UnknownProperty.new(names)
35
+
36
+ raise UnknownProperty, names
36
37
  end
37
38
 
38
39
  def if_p(*names)
39
40
  values = names.map do |name|
40
41
  value = lookup_property(@properties, name)
41
- return ActiveElseBlock.new(self) if value.nil?
42
+ return Bosh::Template::EvaluationContext::ActiveElseBlock.new(self) if value.nil?
43
+
42
44
  value
43
45
  end
44
46
 
45
- yield *values
46
- InactiveElseBlock.new
47
+ yield(*values)
48
+ Bosh::Template::EvaluationContext::InactiveElseBlock.new
47
49
  end
48
50
  end
49
51
  end
50
- end
52
+ end
@@ -5,7 +5,7 @@ module Bosh
5
5
  @manual_link_address = manual_link_address
6
6
  end
7
7
 
8
- def encode_query(_)
8
+ def encode_query(*_)
9
9
  @manual_link_address
10
10
  end
11
11
  end
@@ -12,7 +12,7 @@ module Bosh
12
12
  def render(template_name)
13
13
  spec = JSON.parse(@context)
14
14
  evaluation_context = EvaluationContext.new(spec, nil)
15
- template = ERB.new(File.read(template_name), safe_level = nil, trim_mode = "-")
15
+ template = ERB.new(File.read(template_name), trim_mode: "-")
16
16
  template.result(evaluation_context.get_binding)
17
17
  end
18
18
  end
@@ -8,7 +8,7 @@ module Bosh::Template::Test
8
8
  @job_path = File.join(@release_path, 'jobs', @name)
9
9
  # raise "No such job at path: #{@job_path}" if !File.exist?(@job_path)
10
10
  spec_path = File.join(@job_path, 'spec')
11
- @spec = YAML.load(File.read(spec_path))
11
+ @spec = YAML.load(File.read(spec_path), aliases: true)
12
12
  @templates = @spec['templates']
13
13
  end
14
14
 
@@ -1,11 +1,12 @@
1
1
  module Bosh::Template::Test
2
2
  class Link
3
- attr_reader :instances, :name, :properties
3
+ attr_reader :instances, :name, :properties, :address
4
4
 
5
- def initialize(name:, instances: [], properties: {})
5
+ def initialize(name:, instances: [], properties: {}, address: nil)
6
6
  @instances = instances
7
7
  @name = name
8
8
  @properties = properties
9
+ @address = address
9
10
  end
10
11
 
11
12
  def to_h
@@ -13,6 +14,7 @@ module Bosh::Template::Test
13
14
  'instances' => instances.map(&:to_h),
14
15
  'name' => name,
15
16
  'properties' => properties,
17
+ 'address' => address,
16
18
  }
17
19
  end
18
20
  end
@@ -19,7 +19,7 @@ module Bosh::Template
19
19
 
20
20
  binding = Bosh::Template::EvaluationContext.new(sanitized_hash_with_spec, nil).get_binding
21
21
  raise "No such file at #{@template_path}" unless File.exist?(@template_path)
22
- ERB.new(File.read(@template_path)).result(binding)
22
+ ERB.new(File.read(@template_path), trim_mode: '-').result(binding)
23
23
  end
24
24
 
25
25
  private
@@ -74,4 +74,4 @@ module Bosh::Template
74
74
  end
75
75
  end
76
76
  end
77
- end
77
+ end
@@ -1,5 +1,5 @@
1
1
  module Bosh
2
2
  module Template
3
- VERSION = '2.1.0'
3
+ VERSION = '2.4.0'
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bosh-template
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pivotal
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-09 00:00:00.000000000 Z
11
+ date: 2023-01-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: semi_semantic
@@ -56,7 +56,7 @@ homepage: https://github.com/cloudfoundry/bosh
56
56
  licenses:
57
57
  - Apache-2.0
58
58
  metadata: {}
59
- post_install_message:
59
+ post_install_message:
60
60
  rdoc_options: []
61
61
  require_paths:
62
62
  - lib
@@ -71,9 +71,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
71
71
  - !ruby/object:Gem::Version
72
72
  version: '0'
73
73
  requirements: []
74
- rubyforge_project:
75
- rubygems_version: 2.6.13
76
- signing_key:
74
+ rubygems_version: 3.4.1
75
+ signing_key:
77
76
  specification_version: 4
78
77
  summary: Renders bosh templates
79
78
  test_files: []