Skip to content
This repository was archived by the owner on Oct 6, 2023. It is now read-only.

Commit 023b372

Browse files
authored
Merge pull request #21 from modular-magician/codegen-pr-136
Magic Modules changes.
2 parents 8a667a5 + 0af64a6 commit 023b372

File tree

4 files changed

+97
-12
lines changed

4 files changed

+97
-12
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5378,7 +5378,7 @@ gcompute_target_tcp_proxy { 'id-of-resource':
53785378

53795379
##### `name`
53805380

5381-
Name of the resource. Provided by the client when the resource is
5381+
Required. Name of the resource. Provided by the client when the resource is
53825382
created. The name must be 1-63 characters long, and comply with
53835383
RFC1035. Specifically, the name must be 1-63 characters long and match
53845384
the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the
@@ -5393,7 +5393,7 @@ gcompute_target_tcp_proxy { 'id-of-resource':
53935393

53945394
##### `service`
53955395

5396-
A reference to BackendService resource
5396+
Required. A reference to BackendService resource
53975397

53985398

53995399
##### Output-only properties

lib/puppet/provider/gcompute_target_tcp_proxy/google.rb

Lines changed: 20 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
require 'google/compute/property/string'
3636
require 'google/compute/property/time'
3737
require 'google/hash_utils'
38+
require 'google/object_store'
3839
require 'puppet'
3940

4041
Puppet::Type.type(:gcompute_target_tcp_proxy).provide(:google) do
@@ -56,28 +57,31 @@ def self.prefetch(resources)
5657
debug("prefetch #{name} @ #{project}") unless project.nil?
5758
fetch = fetch_resource(resource, self_link(resource),
5859
'compute#targetTcpProxy')
59-
resource.provider = present(name, fetch) unless fetch.nil?
60+
resource.provider = present(name, fetch, resource) unless fetch.nil?
61+
Google::ObjectStore.instance.add(:gcompute_target_tcp_proxy, resource)
6062
end
6163
end
6264

63-
def self.present(name, fetch)
64-
result = new({ title: name, ensure: :present }.merge(fetch_to_hash(fetch)))
65+
def self.present(name, fetch, resource)
66+
result = new(
67+
{ title: name, ensure: :present }.merge(fetch_to_hash(fetch, resource))
68+
)
69+
result.instance_variable_set(:@fetched, fetch)
6570
result
6671
end
6772

68-
def self.fetch_to_hash(fetch)
73+
def self.fetch_to_hash(fetch, resource)
6974
{
7075
creation_timestamp:
7176
Google::Compute::Property::Time.api_munge(fetch['creationTimestamp']),
72-
description:
73-
Google::Compute::Property::String.api_munge(fetch['description']),
7477
id: Google::Compute::Property::Integer.api_munge(fetch['id']),
75-
name: Google::Compute::Property::String.api_munge(fetch['name']),
7678
proxy_header:
7779
Google::Compute::Property::Enum.api_munge(fetch['proxyHeader']),
7880
service: Google::Compute::Property::BackServSelfLinkRef.api_munge(
7981
fetch['service']
80-
)
82+
),
83+
description: resource[:description],
84+
name: resource[:name]
8185
}.reject { |_, v| v.nil? }
8286
end
8387

@@ -93,7 +97,7 @@ def create
9397
fetch_auth(@resource),
9498
'application/json',
9599
resource_to_request)
96-
wait_for_operation create_req.send, @resource
100+
@fetched = wait_for_operation create_req.send, @resource
97101
@property_hash[:ensure] = :present
98102
end
99103

@@ -114,7 +118,7 @@ def flush
114118
fetch_auth(@resource),
115119
'application/json',
116120
resource_to_request)
117-
wait_for_operation update_req.send, @resource
121+
@fetched = wait_for_operation update_req.send, @resource
118122
end
119123

120124
def dirty(field, from, to)
@@ -125,6 +129,12 @@ def dirty(field, from, to)
125129
}
126130
end
127131

132+
def exports
133+
{
134+
self_link: @fetched['selfLink']
135+
}
136+
end
137+
128138
private
129139

130140
def self.resource_to_hash(resource)

lib/puppet/type/gcompute_target_tcp_proxy.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
require 'google/compute/property/integer'
3131
require 'google/compute/property/string'
3232
require 'google/compute/property/time'
33+
require 'google/object_store'
3334
require 'puppet'
3435

3536
Puppet::Type.newtype(:gcompute_target_tcp_proxy) do
@@ -99,4 +100,9 @@
99100
parent: Google::Compute::Property::BackServSelfLinkRef) do
100101
desc 'A reference to BackendService resource'
101102
end
103+
104+
# Returns all properties that a provider can export to other resources
105+
def exports
106+
provider.exports
107+
end
102108
end

spec/gcompute_target_tcp_proxy_provider_spec.rb

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -506,13 +506,22 @@
506506
context 'title == name (pass)' do
507507
before(:each) do
508508
expect_network_get_failed 1, name: 'title0'
509+
expect_network_get_success_backend_service 1
509510
end
510511

511512
subject do
512513
apply_with_error_check(
513514
<<-MANIFEST
515+
gcompute_backend_service { 'resource(backend_service,0)':
516+
ensure => present,
517+
name => 'test name#0 data',
518+
project => 'test project#0 data',
519+
credential => 'cred0',
520+
}
521+
514522
gcompute_target_tcp_proxy { 'title0':
515523
ensure => absent,
524+
service => 'resource(backend_service,0)',
516525
project => 'test project#0 data',
517526
credential => 'cred0',
518527
}
@@ -538,14 +547,23 @@
538547
context 'title != name (pass)' do
539548
before(:each) do
540549
expect_network_get_failed 1
550+
expect_network_get_success_backend_service 1
541551
end
542552

543553
subject do
544554
apply_with_error_check(
545555
<<-MANIFEST
556+
gcompute_backend_service { 'resource(backend_service,0)':
557+
ensure => present,
558+
name => 'test name#0 data',
559+
project => 'test project#0 data',
560+
credential => 'cred0',
561+
}
562+
546563
gcompute_target_tcp_proxy { 'title0':
547564
ensure => absent,
548565
name => 'test name#0 data',
566+
service => 'resource(backend_service,0)',
549567
project => 'test project#0 data',
550568
credential => 'cred0',
551569
}
@@ -575,13 +593,22 @@
575593
expect_network_get_success 1, name: 'title0'
576594
expect_network_delete 1, 'title0'
577595
expect_network_get_async 1, name: 'title0'
596+
expect_network_get_success_backend_service 1
578597
end
579598

580599
subject do
581600
apply_with_error_check(
582601
<<-MANIFEST
602+
gcompute_backend_service { 'resource(backend_service,0)':
603+
ensure => present,
604+
name => 'test name#0 data',
605+
project => 'test project#0 data',
606+
credential => 'cred0',
607+
}
608+
583609
gcompute_target_tcp_proxy { 'title0':
584610
ensure => absent,
611+
service => 'resource(backend_service,0)',
585612
project => 'test project#0 data',
586613
credential => 'cred0',
587614
}
@@ -609,14 +636,23 @@
609636
expect_network_get_success 1
610637
expect_network_delete 1
611638
expect_network_get_async 1
639+
expect_network_get_success_backend_service 1
612640
end
613641

614642
subject do
615643
apply_with_error_check(
616644
<<-MANIFEST
645+
gcompute_backend_service { 'resource(backend_service,0)':
646+
ensure => present,
647+
name => 'test name#0 data',
648+
project => 'test project#0 data',
649+
credential => 'cred0',
650+
}
651+
617652
gcompute_target_tcp_proxy { 'title0':
618653
ensure => absent,
619654
name => 'test name#0 data',
655+
service => 'resource(backend_service,0)',
620656
project => 'test project#0 data',
621657
credential => 'cred0',
622658
}
@@ -663,6 +699,26 @@
663699
end
664700
end
665701

702+
context '#exports' do
703+
context 'exports all properties' do
704+
let(:resource1) { create_type 1 }
705+
before do
706+
prefetch_backend_service
707+
expect_network_get_success 1
708+
described_class.prefetch(title0: resource1)
709+
end
710+
711+
subject { resource1.exports }
712+
713+
let(:expected_results) do
714+
{
715+
self_link: 'selflink(resource(target_tcp_proxy,0))'
716+
}
717+
end
718+
it { is_expected.to eq(expected_results) }
719+
end
720+
end
721+
666722
private
667723

668724
def expect_network_get_success(id, data = {})
@@ -829,6 +885,19 @@ def debug_network(message)
829885
if ENV['RSPEC_DEBUG'] || ENV['RSPEC_HTTP_VERBOSE']
830886
end
831887

888+
# Creates and prefetch type so exports can be resolved without network access.
889+
def prefetch_backend_service
890+
expect_network_get_success_backend_service 1
891+
892+
resource = Puppet::Type.type(:gcompute_backend_service).new(
893+
project: 'test project#0 data',
894+
name: 'test name#0 data'
895+
)
896+
897+
Puppet::Type.type(:gcompute_backend_service).provider(:google)
898+
.prefetch(resource: resource)
899+
end
900+
832901
def expand_variables_backend_service(template, data, ext_dat = {})
833902
Puppet::Type.type(:gcompute_backend_service).provider(:google)
834903
.expand_variables(template, data, ext_dat)

0 commit comments

Comments
 (0)