Class: OpsManagerUiDrivers::Version17::OpsManagerDirector

Inherits:
Object
  • Object
show all
Defined in:
lib/ops_manager_ui_drivers/version17/ops_manager_director.rb

Instance Method Summary collapse

Constructor Details

#initialize(browser:, iaas_configuration: Version17::BoshProductSections::IaasConfiguration.new(browser: browser)) ⇒ OpsManagerDirector

Returns a new instance of OpsManagerDirector.



4
5
6
7
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 4

def initialize(browser:, iaas_configuration: Version17::BoshProductSections::IaasConfiguration.new(browser: browser))
  @browser = browser
  @iaas_configuration = iaas_configuration
end

Instance Method Details

#add_availability_zones(iaas_type, iaas_availability_zones) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 31

def add_availability_zones(iaas_type, iaas_availability_zones)
  case iaas_type
    when OpsManagerUiDrivers::AWS_IAAS_TYPE, OpsManagerUiDrivers::OPENSTACK_IAAS_TYPE
      return unless iaas_availability_zones
      availability_zones.add_single_az(iaas_availability_zones.first['iaas_identifier'])
    when OpsManagerUiDrivers::VSPHERE_IAAS_TYPE
      iaas_availability_zones && iaas_availability_zones.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) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 43

def add_networks(test_settings)
  iaas_networks = test_settings.ops_manager.networks

  iaas_networks && iaas_networks.each do |network|
    networks.add_network(
      name: network['name'],
      iaas_network_identifier: network['identifier'],
      subnet: network['subnet'],
      reserved_ip_ranges: network['reserved_ips'],
      dns: network['dns'],
      gateway: network['gateway'],
    )
  end
end

#assign_azs_and_networks(iaas_type, iaas_availability_zones, ops_manager) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 89

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.networks[0]['name'], from: 'Network')
      browser.select(iaas_availability_zones.first['iaas_identifier'])
    when OpsManagerUiDrivers::VSPHERE_IAAS_TYPE
      browser.click_on 'Assign AZs and Networks'
      browser.select(ops_manager.networks[0]['name'], from: 'Network')
      browser.select(iaas_availability_zones.first['name'])
    when OpsManagerUiDrivers::VCLOUD_IAAS_TYPE
      browser.click_on 'Assign Networks'
      browser.select(ops_manager.networks[0]['name'], from: 'Network')
  end
  browser.click_on 'Save'
end

#config_director(ops_manager) ⇒ Object



62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 62

def config_director(ops_manager)
  browser.click_on 'Director Config'
  browser.fill_in('director_configuration[ntp_servers_string]', with: ops_manager.ntp_servers)
  browser.check('Enable VM Resurrector Plugin') if ops_manager.resurrector_enabled

  s3_blobstore = ops_manager.s3_blobstore
  if s3_blobstore
    browser.choose('S3 Compatible Blobstore')
    browser.fill_in('director_configuration[s3_blobstore_options][endpoint]', with: s3_blobstore.endpoint)
    browser.fill_in('director_configuration[s3_blobstore_options][bucket_name]', with: s3_blobstore.bucket_name)
    browser.fill_in('director_configuration[s3_blobstore_options][access_key]', with: s3_blobstore.access_key_id)
    browser.fill_in('director_configuration[s3_blobstore_options][secret_key]', with: s3_blobstore.secret_access_key)
  end

  mysql = ops_manager.mysql
  if mysql
    browser.choose('External MySQL Database')
    browser.fill_in('director_configuration[external_database_options][host]', with: mysql.host)
    browser.fill_in('director_configuration[external_database_options][port]', with: mysql.port)
    browser.fill_in('director_configuration[external_database_options][user]', with: mysql.user)
    browser.fill_in('director_configuration[external_database_options][password]', with: mysql.password)
    browser.fill_in('director_configuration[external_database_options][database]', with: mysql.dbname)
  end

  browser.click_on 'Save'
end

#configure_bosh_product(test_settings) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 9

def configure_bosh_product(test_settings)
  configure_iaas(test_settings)

  config_director(test_settings.ops_manager)

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

  add_networks(test_settings)

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

  configure_experimental_features(test_settings.ops_manager.experimental_features)
end

#configure_experimental_features(experimental_features) ⇒ Object

WARNING: these features are experimental and may change or disappear in later versions of opsman



118
119
120
121
122
123
124
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 118

def configure_experimental_features(experimental_features)
  browser.click_on 'Experimental Features'

  trusted_certificates = experimental_features ? experimental_features.trusted_certificates : ''

  browser.fill_in('experimental_features[trusted_certificates]', with: trusted_certificates)
end

#configure_iaas(test_settings) ⇒ Object



23
24
25
26
27
28
29
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 23

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_vm_passwords(use_generated_passwords: true) ⇒ Object



106
107
108
109
110
111
112
113
114
115
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 106

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) ⇒ Object



58
59
60
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 58

def delete_network(network_name)
  networks.delete_network(network_name)
end

#selected_network_name(iaas_type) ⇒ Object



126
127
128
129
130
131
132
133
134
135
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 126

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) ⇒ Object



137
138
139
140
141
142
143
144
145
146
# File 'lib/ops_manager_ui_drivers/version17/ops_manager_director.rb', line 137

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