Class: Emasser::CloudResource

Inherits:
SubCommandBase show all
Defined in:
lib/emasser/post.rb,
lib/emasser/delete.rb

Overview

The Cloud Resource Results endpoint provides the ability to remove cloud resources and their scan results in the assets module for a system.

Endpoint:

/api/systems/{systemId}/cloud-resource-results

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from SubCommandBase

banner

Methods included from OutputConverters

#change_to_datetime, #to_output_hash

Methods included from InputConverters

#to_input_hash

Methods included from OptionsParser

#optional_options, #required_options

Class Method Details

.exit_on_failure?Boolean

Returns:

  • (Boolean)


876
877
878
# File 'lib/emasser/post.rb', line 876

def self.exit_on_failure?
  true
end

Instance Method Details

#addObject

rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity



911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
# File 'lib/emasser/post.rb', line 911

def add
  # Required and Optional main fields
  body = {}
  body[:provider] = options[:provider]
  body[:resourceId] = options[:resourceId]
  body[:resourceName] = options[:resourceName]
  body[:resourceType] = options[:resourceType]

  body[:initiatedBy] = options[:initiatedBy] if options[:initiatedBy]
  body[:cspAccountId] = options[:cspAccountId] if options[:cspAccountId]
  body[:cspRegion] = options[:cspRegion] if options[:cspRegion]
  body[:isBaseline] = options[:isBaseline] if options[:isBaseline]

  # Optional tags field
  tags = {}
  tags[:test] = options[:test] if options[:test]

  # Required and Optional compliances results fields
  compliance_results = {}
  compliance_results[:cspPolicyDefinitionId] = options[:cspPolicyDefinitionId]
  compliance_results[:isCompliant] = options[:isCompliant]
  compliance_results[:policyDefinitionTitle] = options[:policyDefinitionTitle]
  # Optional fields
  compliance_results[:assessmentProcedure] = options[:assessmentProcedure] if options[:assessmentProcedure]
  compliance_results[:complianceCheckTimestamp] = options[:complianceCheckTimestamp] if options[:complianceCheckTimestamp]
  compliance_results[:complianceReason] = options[:complianceReason] if options[:complianceReason]
  compliance_results[:control] = options[:control] if options[:control]
  compliance_results[:policyDeploymentName] = options[:policyDeploymentName] if options[:policyDeploymentName]
  compliance_results[:policyDeploymentVersion] = options[:policyDeploymentVersion] if options[:policyDeploymentVersion]
  compliance_results[:severity] = options[:severity] if options[:severity]
  compliance_results_array = Array.new(1, compliance_results)

  # Build the body array
  body[:tags] = tags
  body[:complianceResults] = compliance_results_array
  body_array = Array.new(1, body)

  # Call the API
  begin
    result = EmassClient::CloudResourceResultsApi
             .new.add_cloud_resources_by_system_id(options[:systemId], body_array)
    puts to_output_hash(result).green
  rescue EmassClient::ApiError => e
    puts 'Exception when calling StaticCodeScansApi->add_cloud_resources_by_system_id'.red
    puts to_output_hash(e)
  end
end

#removeObject



214
215
216
217
218
219
220
221
222
223
224
# File 'lib/emasser/delete.rb', line 214

def remove
  body = EmassClient::CloudResourcesDeleteBodyInner.new
  body.resource_id = options[:resourceId]
  body_array = Array.new(1, body)

  result = EmassClient::CloudResourceResultsApi.new.delete_cloud_resources(options[:systemId], body_array)
  puts to_output_hash(result).green
rescue EmassClient::ApiError => e
  puts 'Exception when calling CloudResourceResultsApi->delete_cloud_resources'.red
  puts to_output_hash(e)
end