Class: Emasser::Hardware

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

Overview

Remove one or many hardware assets in a system

Endpoint:

/api/systems/{systemId}/hw-baseline

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)


565
566
567
# File 'lib/emasser/get.rb', line 565

def self.exit_on_failure?
  true
end

Instance Method Details

#addObject

rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity



610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
# File 'lib/emasser/post.rb', line 610

def add
  # Required fields
  require_field = EmassClient::HwBaselineRequiredFields.new
  require_field.asset_name = options[:assetName]

  # Conditional fields
  conditional_fields = EmassClient::HwBaselineConditionalFields.new
  conditional_fields.public_facing_fqdn = options[:publicFacingFqdn] if options[:publicFacingFqdn]
  conditional_fields.public_facing_ip_address = options[:publicFacingIpAddress] if options[:publicFacingIpAddress]
  conditional_fields.public_facing_urls = options[:publicFacingUrls] if options[:publicFacingUrls]

  # Optional fields
  optional_fields = EmassClient::HwBaselineOptionalFields.new
  optional_fields.component_type = options[:componentType] if options[:componentType]
  optional_fields.nickname = options[:nickname] if options[:nickname]
  optional_fields.asset_ip_address = options[:assetIpAddress] if options[:assetIpAddress]
  optional_fields.public_facing = options[:publicFacing] if options[:publicFacing]
  optional_fields.virtual_asset = options[:virtualAsset] if options[:virtualAsset]
  optional_fields.manufacturer = options[:manufacturer] if options[:manufacturer]
  optional_fields.model_number = options[:modelNumber] if options[:modelNumber]
  optional_fields.serial_number = options[:serialNumber] if options[:serialNumber]
  optional_fields.os_ios_fw_version = options[:OsIosFwVersion] if options[:OsIosFwVersion]
  optional_fields.memory_size_type = options[:memorySizeType] if options[:memorySizeType]
  optional_fields.location = options[:location] if options[:location]
  optional_fields.approval_status = options[:approvalStatus] if options[:approvalStatus]
  optional_fields.critical_asset = options[:criticalAsset] if options[:criticalAsset]

  # Build the body array
  body = {}
  body = body.merge(require_field)
  body = body.merge(conditional_fields)
  body = body.merge(optional_fields)
  body_array = Array.new(1, body)

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

#assetsObject



578
579
580
581
582
583
584
585
586
587
588
589
590
# File 'lib/emasser/get.rb', line 578

def assets
  optional_options_keys = optional_options(@_initializer).keys
  optional_options = to_input_hash(optional_options_keys, options)

  begin
    # Get hardware assets form provided system
    result = EmassClient::HardwareBaselineApi.new.get_system_hw_baseline(options[:systemId], optional_options)
    puts to_output_hash(result).green
  rescue EmassClient::ApiError => e
    puts 'Exception when calling HardwareBaselineApi->get_system_hw_baseline'.red
    puts to_output_hash(e)
  end
end

#removeObject



151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/emasser/delete.rb', line 151

def remove
  body_array = []
  options[:hardwareIds].each do |hardware|
    obj = {}
    obj[:hardwareId] = hardware
    body_array << obj
  end

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

#updateObject

rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity



654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
# File 'lib/emasser/put.rb', line 654

def update
  # Required fields
  require_field = EmassClient::HwBaselineRequiredFields.new
  require_field.asset_name = options[:assetName]
  read_only_field = EmassClient::HwBaselineReadOnlyFields.new
  read_only_field.hardware_id = options[:hardwareId] if options[:hardwareId]

  # Conditional fields
  conditional_fields = EmassClient::HwBaselineConditionalFields.new
  conditional_fields.public_facing_fqdn = options[:publicFacingFqdn] if options[:publicFacingFqdn]
  conditional_fields.public_facing_ip_address = options[:publicFacingIpAddress] if options[:publicFacingIpAddress]
  conditional_fields.public_facing_urls = options[:publicFacingUrls] if options[:publicFacingUrls]

  # Optional fields
  optional_fields = EmassClient::HwBaselineOptionalFields.new
  optional_fields.component_type = options[:componentType] if options[:componentType]
  optional_fields.nickname = options[:nickname] if options[:nickname]
  optional_fields.asset_ip_address = options[:assetIpAddress] if options[:assetIpAddress]
  optional_fields.public_facing = options[:publicFacing] if options[:publicFacing]
  optional_fields.virtual_asset = options[:virtualAsset] if options[:virtualAsset]
  optional_fields.manufacturer = options[:manufacturer] if options[:manufacturer]
  optional_fields.model_number = options[:modelNumber] if options[:modelNumber]
  optional_fields.serial_number = options[:serialNumber] if options[:serialNumber]
  optional_fields.os_ios_fw_version = options[:OsIosFwVersion] if options[:OsIosFwVersion]
  optional_fields.memory_size_type = options[:memorySizeType] if options[:memorySizeType]
  optional_fields.location = options[:location] if options[:location]
  optional_fields.approval_status = options[:approvalStatus] if options[:approvalStatus]
  optional_fields.critical_asset = options[:criticalAsset] if options[:criticalAsset]

  # Build the body array
  body = {}
  body = body.merge(require_field)
  body = body.merge(read_only_field)
  body = body.merge(conditional_fields)
  body = body.merge(optional_fields)
  body_array = Array.new(1, body)

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