Class: Emasser::Controls
- Inherits:
-
SubCommandBase
- Object
- Thor
- SubCommandBase
- Emasser::Controls
- Defined in:
- lib/emasser/get.rb,
lib/emasser/put.rb
Overview
Update Security Control information of a system for both the Implementation Plan and Risk Assessment.
Endpoint:
/api/systems/{systemId}/controls - Update control information in a system for one or many controls
rubocop:disable Style/WordArray
Class Method Summary collapse
Instance Method Summary collapse
- #forSystem ⇒ Object
-
#update ⇒ Object
rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity.
Methods inherited from SubCommandBase
Methods included from OutputConverters
#change_to_datetime, #to_output_hash
Methods included from InputConverters
Methods included from OptionsParser
#optional_options, #required_options
Class Method Details
.exit_on_failure? ⇒ Boolean
220 221 222 |
# File 'lib/emasser/get.rb', line 220 def self.exit_on_failure? true end |
Instance Method Details
#forSystem ⇒ Object
232 233 234 235 236 237 238 239 240 241 242 243 |
# File 'lib/emasser/get.rb', line 232 def forSystem = (@_initializer).keys = to_input_hash(, ) begin result = EmassClient::ControlsApi.new.get_system_controls([:systemId], ) puts to_output_hash(result).green rescue EmassClient::ApiError => e puts 'Exception when calling ControlsApi->get_system_controls'.red puts to_output_hash(e) end end |
#update ⇒ Object
rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/emasser/put.rb', line 115 def update # Check if business logic is satisfied process_business_logic # Required fields required = EmassClient::ControlsRequiredFields.new required.acronym = [:acronym] required.responsible_entities = [:responsibleEntities] required.control_designation = [:controlDesignation] required.estimated_completion_date = [:estimatedCompletionDate] required.implementation_narrative = [:implementationNarrative] # Add optional fields optional = EmassClient::ControlsOptionalFields.new optional.implementation_status = [:implementationStatus] if [:implementationStatus] optional.severity = [:severity] if [:severity] optional.vulnerabilty_summary = [:vulnerabiltySummary] if [:vulnerabiltySummary] optional.recommendations = [:recommendations] if [:recommendations] optional.relevance_of_threat = [:relevanceOfThreat] if [:relevanceOfThreat] optional.likelihood = [:likelihood] if [:likelihood] optional.impact = [:impact] if [:impact] optional.impact_description = [:impactDescription] if [:impactDescription] optional.residual_risk_level = [:residualRiskLevel] if [:residualRiskLevel] optional.test_method = [:testMethod] if [:testMethod] optional.mitigations = [:mitigations] if [:mitigations] optional.application_layer = [:applicationLayer] if [:applicationLayer] optional.database_layer = [:databaseLayer] if [:databaseLayer] optional. = [:operatingSystemLayer] if [:operatingSystemLayer] # Add conditional fields conditional = EmassClient::ControlsConditionalFields.new conditional.common_control_provider = [:commonControlProvider] if [:commonControlProvider] conditional.na_justification = [:naJustification] if [:naJustification] conditional.slcm_criticality = [:slcmCriticality] if [:slcmCriticality] conditional.slcm_frequency = [:slcmFrequency] if [:slcmFrequency] conditional.slcm_method = [:slcmMethod] if [:slcmMethod] conditional.slcm_reporting = [:slcmReporting] if [:slcmReporting] conditional.slcm_tracking = [:slcmTracking] if [:slcmTracking] conditional.slcm_comments = [:slcmComments] if [:slcmComments] # Build the request body body = {} body = body.merge(required) body = body.merge(optional) body = body.merge(conditional) # All good, wrap object into an array body_array = Array.new(1, body) begin result = EmassClient::ControlsApi.new.update_control_by_system_id([:systemId], body_array) puts to_output_hash(result).green rescue EmassClient::ApiError => e puts 'Exception when calling ControlsApi->update_control_by_system_id'.red puts to_output_hash(e) end end |