mirror of
https://github.com/inspec/inspec
synced 2024-11-27 15:10:44 +00:00
55 lines
1.2 KiB
Ruby
55 lines
1.2 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'azure_backend'
|
||
|
|
||
|
class AzureGenericResource < AzureResourceBase
|
||
|
name 'azure_generic_resource'
|
||
|
|
||
|
desc '
|
||
|
Inspec Resource to interrogate any Resource type in Azure
|
||
|
'
|
||
|
|
||
|
attr_accessor :filter, :total, :counts, :name, :type, :location, :probes
|
||
|
|
||
|
def initialize(opts = {})
|
||
|
# Call the parent class constructor
|
||
|
super(opts)
|
||
|
|
||
|
# Get the resource group
|
||
|
resource_group
|
||
|
|
||
|
# Get the resources
|
||
|
resources
|
||
|
|
||
|
# Create the tag methods
|
||
|
create_tag_methods
|
||
|
end
|
||
|
|
||
|
# Define the filter table so that it can be interrogated
|
||
|
@filter = FilterTable.create
|
||
|
@filter.add_accessor(:count)
|
||
|
.add_accessor(:entries)
|
||
|
.add_accessor(:where)
|
||
|
.add_accessor(:contains)
|
||
|
.add(:exist?, field: 'exist?')
|
||
|
.add(:type, field: 'type')
|
||
|
.add(:name, field: 'name')
|
||
|
.add(:location, field: 'location')
|
||
|
.add(:properties, field: 'properties')
|
||
|
|
||
|
@filter.connect(self, :probes)
|
||
|
|
||
|
def parse_resource(resource)
|
||
|
# return a hash of information
|
||
|
parsed = {
|
||
|
'location' => resource.location,
|
||
|
'name' => resource.name,
|
||
|
'type' => resource.type,
|
||
|
'exist?' => true,
|
||
|
'properties' => AzureResourceProbe.new(resource.properties),
|
||
|
}
|
||
|
|
||
|
parsed
|
||
|
end
|
||
|
end
|