class OpsManagerUiDrivers::Version17::OpsManagerDirector

Attributes

browser[R]
iaas_configuration[R]

Public Class Methods

new(browser:, iaas_configuration: Version17::BoshProductSections::IaasConfiguration.new(browser: browser)) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 6
def initialize(browser:, iaas_configuration: Version17::BoshProductSections::IaasConfiguration.new(browser: browser))
  @browser = browser
  @iaas_configuration = iaas_configuration
end

Public Instance Methods

add_availability_zones(iaas_type, iaas_availability_zones) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 35
def add_availability_zones(iaas_type, iaas_availability_zones)
  case iaas_type
    when OpsManagerUiDrivers::AWS_IAAS_TYPE, OpsManagerUiDrivers::OPENSTACK_IAAS_TYPE, OpsManagerUiDrivers::GOOGLE_IAAS_TYPE
      return unless iaas_availability_zones
      iaas_availability_zones && iaas_availability_zones.uniq.each do |az|
        availability_zones.add_az('iaas_identifier' => az['iaas_identifier'])
      end
    when OpsManagerUiDrivers::VSPHERE_IAAS_TYPE
      iaas_availability_zones && iaas_availability_zones.uniq.each do |az|
        availability_zones.add_az('name' => az['name'], 'cluster' => az['cluster'], 'resource_pool' => az['resource_pool'])
      end
  end
end
add_networks(test_settings) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 49
def add_networks(test_settings)
  iaas_networks = test_settings.dig('ops_manager', 'networks')

  iaas_networks && iaas_networks.each do |network|
    networks.add_network(
      name: network['name'],
      subnets: network['subnets'],
    )
  end
end
assign_azs_and_networks(iaas_type, iaas_availability_zones, ops_manager) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 100
def assign_azs_and_networks(iaas_type, iaas_availability_zones, ops_manager)
  case iaas_type
    when OpsManagerUiDrivers::AWS_IAAS_TYPE, OpsManagerUiDrivers::OPENSTACK_IAAS_TYPE
      browser.click_on 'Assign AZs and Networks'
      browser.select(ops_manager.dig('networks', 0, 'name'), from: 'Network')
      browser.select(iaas_availability_zones.first['iaas_identifier'], from: 'Singleton Availability Zone')
    when OpsManagerUiDrivers::VSPHERE_IAAS_TYPE
      browser.click_on 'Assign AZs and Networks'
      browser.select(ops_manager.dig('networks', 0, 'name'), from: 'Network')
      browser.select(iaas_availability_zones.first['name'], from: 'Singleton Availability Zone')
    when OpsManagerUiDrivers::VCLOUD_IAAS_TYPE
      browser.click_on 'Assign Networks'
      browser.select(ops_manager.dig('networks', 0, 'name'), from: 'Network')
  end
  browser.click_on 'Save'
end
assign_network(iaas_type:, network_name:) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 117
def assign_network(iaas_type:, network_name:)
  case iaas_type
    when OpsManagerUiDrivers::AWS_IAAS_TYPE, OpsManagerUiDrivers::OPENSTACK_IAAS_TYPE, OpsManagerUiDrivers::VSPHERE_IAAS_TYPE
      browser.click_on 'Assign AZs and Networks'
      browser.select(network_name, from: 'Network')
    when OpsManagerUiDrivers::VCLOUD_IAAS_TYPE
      browser.click_on 'Assign Networks'
      browser.select(network_name, from: 'Network')
  end
  browser.click_on 'Save'
end
config_director(ops_manager) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 64
def config_director(ops_manager)
  browser.click_on 'Director Config'
  browser.fill_in('director_configuration[ntp_servers_string]', with: ops_manager.dig('ntp_servers')) if ops_manager.has_key?('ntp_servers')
  browser.find(:checkbox, 'Enable VM Resurrector Plugin').set(ops_manager.dig('resurrector_enabled')) if ops_manager.has_key?('resurrector_enabled')
  browser.fill_in('director_configuration[director_hostname]', with: ops_manager.dig('director_hostname')) if ops_manager.dig('director_hostname')

  s3_blobstore = ops_manager.dig('s3_blobstore')
  if s3_blobstore
    browser.choose('S3 Compatible Blobstore')
    browser.fill_in('director_configuration[s3_blobstore_options][endpoint]', with: s3_blobstore.dig('endpoint'))
    browser.fill_in('director_configuration[s3_blobstore_options][bucket_name]', with: s3_blobstore.dig('bucket_name'))
    browser.fill_in('director_configuration[s3_blobstore_options][access_key]', with: s3_blobstore.dig('access_key_id'))
    @browser.execute_script "$('a[data-masked-input-name=\"director_configuration[s3_blobstore_options][secret_key]\"]:contains(\"Change\")').click()"
    browser.fill_in('director_configuration[s3_blobstore_options][secret_key]', with: s3_blobstore.dig('secret_access_key'))

    signature_version = s3_blobstore.dig('signature_version')
    if signature_version == 4
      browser.choose('V4 Signature')
      browser.fill_in('director_configuration[s3_blobstore_options][region]', with: s3_blobstore.dig('region'))
    end
  end

  mysql = ops_manager.dig('mysql')
  if mysql
    browser.choose('External MySQL Database')
    browser.fill_in('director_configuration[external_database_options][host]', with: mysql.dig('host'))
    browser.fill_in('director_configuration[external_database_options][port]', with: mysql.dig('port'))
    browser.fill_in('director_configuration[external_database_options][user]', with: mysql.dig('user'))
    @browser.execute_script "$('a[data-masked-input-name=\"director_configuration[external_database_options][password]\"]:contains(\"Change\")').click()"
    browser.fill_in('director_configuration[external_database_options][password]', with: mysql.dig('password'))
    browser.fill_in('director_configuration[external_database_options][database]', with: mysql.dig('dbname'))
  end

  browser.click_on 'Save'
end
configure_bosh_product(test_settings) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 13
def configure_bosh_product(test_settings)
  configure_iaas(test_settings)

  config_director(test_settings.dig('ops_manager'))

  add_availability_zones(test_settings.dig('iaas_type'), test_settings.dig('ops_manager', 'availability_zones'))

  add_networks(test_settings)

  assign_azs_and_networks(test_settings.dig('iaas_type'), test_settings.dig('ops_manager', 'availability_zones'), test_settings.dig('ops_manager'))

  configure_trusted_certificates(test_settings.dig('ops_manager', 'trusted_certificates'))
end
configure_iaas(test_settings) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 27
def configure_iaas(test_settings)
  iaas_settings = Settings.for(test_settings)
  iaas_specific_fields = iaas_settings.iaas_configuration_fields
  advanced_infrastructure_config_fields = iaas_settings.advanced_infrastructure_config_fields
  iaas_configuration.fill_iaas_settings(iaas_specific_fields)
  advanced_infrastructure_config.fill_advanced_infrastructure_config_settings(advanced_infrastructure_config_fields)
end
configure_security_group(test_settings) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 169
def configure_security_group(test_settings) # lost in upgrade from 1.6 => 1.7
  iaas_configuration.fill_iaas_settings(
    'security_group' => test_settings.dig('ops_manager', 'aws', 'security_group_id'),
  )
end
configure_trusted_certificates(trusted_certificates) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 140
def configure_trusted_certificates(trusted_certificates)
  return unless trusted_certificates
  browser.click_on 'Security'
  browser.fill_in('security_tokens[trusted_certificates]', with: trusted_certificates)
  browser.click_on 'Save'
end
configure_vm_passwords(use_generated_passwords: true) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 129
def configure_vm_passwords(use_generated_passwords: true)
  browser.click_on 'Security'
  if use_generated_passwords
    browser.choose('Generate passwords')
  else
    browser.choose('Use default BOSH password')
  end
  browser.click_on 'Save'
  browser.poll_up_to_times(20) { browser.assert_text('Settings updated') }
end
delete_network(network_name) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 60
def delete_network(network_name)
  networks.delete_network(network_name)
end
selected_network_name(iaas_type) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 147
def selected_network_name(iaas_type)
  case iaas_type
    when OpsManagerUiDrivers::VCLOUD_IAAS_TYPE
      browser.click_on 'Assign Networks'
    else
      browser.click_on 'Assign AZs and Networks'
  end
  selected_options = browser.find_field('Network').all('option[selected]')
  selected_options.first.text unless selected_options.empty?
end
selected_singleton_az_name(iaas_type) click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 158
def selected_singleton_az_name(iaas_type)
  case iaas_type
    when OpsManagerUiDrivers::VCLOUD_IAAS_TYPE
      browser.click_on 'Assign Networks'
    else
      browser.click_on 'Assign AZs and Networks'
  end
  selected_options = browser.find_field('bosh_product[singleton_availability_zone_reference]').all('option[selected]')
  selected_options.first.text unless selected_options.empty?
end

Private Instance Methods

advanced_infrastructure_config() click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 188
def advanced_infrastructure_config
  @advanced_infrastructure_config ||= Version17::BoshProductSections::AdvancedInfrastructureConfig.new(browser: browser)
end
availability_zones() click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 180
def availability_zones
  @availability_zones ||= Version17::BoshProductSections::AvailabilityZones.new(browser: browser)
end
networks() click to toggle source
# File lib/ops_manager_ui_drivers/version17/ops_manager_director.rb, line 184
def networks
  @networks ||= Version17::BoshProductSections::Networks.new(browser: browser)
end