Skip to content
2 changes: 1 addition & 1 deletion .ci/magic-modules/create-pr.sh
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ if [ "$BRANCH_NAME" = "$ORIGINAL_PR_BRANCH" ]; then
fi

git checkout -b "$BRANCH_NAME"
if INSPEC_PR=$(hub pull-request -b "$INSPEC_REPO_USER/inspec:master" -F ./downstream_body); then
if INSPEC_PR=$(hub pull-request -b "$INSPEC_REPO_USER/inspec-gcp:master" -F ./downstream_body); then
DEPENDENCIES="${DEPENDENCIES}depends: $INSPEC_PR ${NEWLINE}"
else
echo "InSpec - did not generate a PR."
Expand Down
81 changes: 81 additions & 0 deletions products/compute/inspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,87 @@ manifest: !ruby/object:Provider::Inspec::Manifest
summary: 'InSpec resources for verifying GCP infrastructure'
description: |
InSpec resources for verifying GCP infrastructure
overrides: !ruby/object:Provider::ResourceOverrides
Address: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Autoscaler: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
BackendBucket: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
BackendService: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Disk: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
DiskType: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Firewall: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
ForwardingRule: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
GlobalAddress: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
GlobalForwardingRule: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
HealthCheck: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
HttpHealthCheck: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
HttpsHealthCheck: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Image: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Instance: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
InstanceGroup: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
InstanceGroupManager: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
InstanceTemplate: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
InterconnectAttachment: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
License: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
MachineType: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Network: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Region: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
RegionAutoscaler: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
RegionDisk: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
RegionDiskType: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Route: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Router: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Snapshot: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
SslCertificate: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
SslPolicy: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
Subnetwork: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
TargetHttpProxy: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
TargetHttpsProxy: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
TargetPool: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
TargetTcpProxy: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
TargetVpnGateway: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
TargetSslProxy: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
UrlMap: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
VpnTunnel: !ruby/object:Provider::Chef::ResourceOverride
exclude: true
files: !ruby/object:Provider::Config::Files
style:
functions:
Expand Down
1 change: 1 addition & 0 deletions provider/inspec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ module Provider
# Code generator for Example Cookbooks that manage Google Cloud Platform
# resources.
class Inspec < Provider::Core
include Google::RubyUtils
# Settings for the provider
class Config < Provider::Config
attr_reader :manifest
Expand Down
59 changes: 58 additions & 1 deletion templates/inspec/singular_resource.erb
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,61 @@
-%>
<%= compile 'templates/license.erb' -%>

<%= lines(autogen_notice :ruby) -%>
<%= lines(autogen_notice :ruby) -%>

# A provider to manage <%= @api.name -%> resources.
<%= lines(indent(
emit_rubocop(binding, :class,
['Google', @api.prefix.upcase, object.name].join('::'),
:disabled),
4)) -%>
class <%= object.name -%> < Inspec.resource(1)

name 'google_<%= product_ns.downcase -%>_<%= object.name.downcase -%>'
desc '<%= object.name -%>'
supports platform: 'gcp-mm'

<% object.properties.reject(&:input).each do |prop| -%>
<%= "attr_reader :#{prop.out_name}" -%>

<% end -%>

<%
base = "'#{object.self_link_url[0].join}'"
url = object.self_link_url[1]
if url.is_a?(Array)
url = url.join('')
else
url = url.split("\n").join('')
end
url = "'#{url}'"
-%>
def base
<%= base %>
end

def url
<%= url %>
end

<% if object.self_link_query.nil? -%>
def initialize(params)
@fetched = <%= method_call('fetch_resource', ['params', ("'#{object.kind}'" if object.kind?)], 2) %>
parse unless @fetched.nil?
end
<% else # object.self_link_query.nil? -%>
def initialize(params)
@fetched = <%= method_call('fetch_wrapped_resource', ['params', ("'#{object.kind}'" if object.kind?),
"'#{object.self_link_query.kind}'",
"'#{object.self_link_query.items}'"], 2) %>
parse unless @fetched.nil?
end
<% end # object.self_link_query.nil? -%>

# TODO
def parse end

def exists?
!@fetched.nil?
end
end