class OpsManagerUiDrivers::Version110::ProductDashboard

Public Instance Methods

apply_updates(validate: true, errands: {}) click to toggle source
# File lib/ops_manager_ui_drivers/version110/product_dashboard.rb, line 6
def apply_updates(validate: true, errands: {})
  open_dashboard
  select_errand_states(errands)

  browser.click_on 'install-action'
  if validate
    fail 'Install failed verification' if nonignorable_verification_failed?
    allow_cpu_verification_errors
    allow_privilege_verification_errors
    allow_icmp_verification_errors #this is only for AWS; consider moving out

    ignore_allowable_errors
    assert_installation_started
  end

  ApplyUpdatesResult.new(browser: @browser)
end
errands_with_state(product_name, errand_state) click to toggle source
# File lib/ops_manager_ui_drivers/version110/product_dashboard.rb, line 24
def errands_with_state(product_name, errand_state)
  option_value = translate_errand_state(errand_state)
  open_dashboard
  browser.execute_script "$('li.expandable > a.title').click()"
  browser.all("[ name ^= 'errands[#{product_name}-' ]").
    select { |select| select[:value] == option_value }.
    map { |select| select[:name].match(/^errands\[.*\]\[run_(?:post_deploy|pre_delete)\]\[(.*)\]$/)[1]}
end

Private Instance Methods

select_errand_states(errands) click to toggle source
# File lib/ops_manager_ui_drivers/version110/product_dashboard.rb, line 50
      def select_errand_states(errands)
        browser.execute_script "$('li.expandable > a.title').click()"

        errands.each do |product_name, errand_types|
          errand_types.each do |errand_type, errand_selections|
            errand_selections.each do |errand_identifier, errand_run_state|

              state_map = {
                'default' => 0,
                true => 1,
                false => 2,
                'when-changed' => 3,
              }

              browser.execute_script(
                <<-JS
                  $(
                      '[ name ^= "errands[#{product_name}-" ]' +
                      '[ name *= "][#{errand_type}" ]' +
                      '[ name $= "][#{errand_identifier}]" ]'
                   ).prop('selectedIndex', #{state_map[errand_run_state]})
              JS
              )
            end
          end
        end
      end
translate_errand_state(errand_state) click to toggle source
# File lib/ops_manager_ui_drivers/version110/product_dashboard.rb, line 35
def translate_errand_state(errand_state)
  case errand_state
    when 'On'
      'true'
    when 'Off'
      'false'
    when 'When Changed'
      'when-changed'
    when 'Default'
      'default'
    else
      raise "Unknown errand state: #{errand_state.inspect}"
  end
end