lib/resources/azure/azure_generic_resource.rb



# encoding: utf-8

require 'resources/azure/azure_backend'
require 'utils/filter'

module Inspec::Resources
  class AzureGenericResource < AzureResourceBase
    name 'azure_generic_resource'

    desc '
      Inspec Resource to interrogate any Resource type in Azure
    '

    supports platform: 'azure'

    attr_accessor :filter, :total, :counts, :name, :type, :location, :probes

    def initialize(opts = {})
      warn "[DEPRECATED] use a specific azure resources instead of 'azure_generic_resource'. See https://github.com/inspec/inspec/issues/3131"

      # 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.register_filter_method(:contains)
           .register_column(:type, field: 'type')
           .register_column(:name, field: 'name')
           .register_column(:location, field: 'location')
           .register_column(:properties, field: 'properties')

    @filter.install_filter_methods_on_resource(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
end