Class: OpsManagerUiDrivers::Version15::OpsManagerDirector

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

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of OpsManagerDirector.



6
7
8
9
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 6

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

Instance Method Details

#add_azs(iaas_type, iaas_availability_zones) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 36

def add_azs(iaas_type, iaas_availability_zones)
  case iaas_type
    when OpsManagerUiDrivers::AWS_IAAS_TYPE then
      return unless iaas_availability_zones
      availability_zones.add_aws_az(iaas_availability_zones.first['iaas_identifier'])
    else
      iaas_availability_zones && iaas_availability_zones.each do |az|
        availability_zones.add_az(az['name'], az['cluster'], az['resource_pool'])
      end
  end
end

#add_networks(test_settings) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 48

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

  case test_settings.iaas_type
    when OpsManagerUiDrivers::AWS_IAAS_TYPE, OpsManagerUiDrivers::OPENSTACK_IAAS_TYPE then
      first_network = iaas_networks.first
      browser.click_on 'show-network-action'
      browser.fill_in 'network[networks][][name]', with: first_network['name']
      browser.fill_in 'network[networks][][iaas_network_identifier]', with: first_network['identifier']
      browser.fill_in 'network[networks][][subnet]', with: first_network['subnet']
      browser.fill_in 'network[networks][][reserved_ip_ranges]', with: first_network['reserved_ips']
      browser.fill_in 'network[networks][][dns]', with: first_network['dns']
      browser.fill_in 'network[networks][][gateway]', with: first_network['gateway']
      browser.click_on 'Save'
      flash_errors = browser.all('.flash-message.error ul.message li').to_a
      flash_errors.reject! { |node| node.text =~ /cannot reach gateway/i }

      if (flash_errors.length > 0)
        fail flash_errors.collect(&:text).inspect
      end
    else
      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
end

#assign_availability_zone(iaas_type, iaas_availability_zones) ⇒ Object



109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 109

def assign_availability_zone(iaas_type, iaas_availability_zones)
  return unless iaas_availability_zones
  case iaas_type
    when OpsManagerUiDrivers::AWS_IAAS_TYPE then
      browser.click_on 'Assign Availability Zones'
      browser.select(iaas_availability_zones.first['iaas_identifier'])
      browser.click_on 'Save'
    when OpsManagerUiDrivers::VSPHERE_IAAS_TYPE
      browser.click_on 'Assign Availability Zones'
      browser.select(iaas_availability_zones.first['name'])
      browser.click_on 'Save'
  end
end

#assign_network(deployment_network:) ⇒ Object



159
160
161
162
163
164
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 159

def assign_network(deployment_network:)
  browser.click_on 'Assign Networks'

  browser.select(deployment_network, from: 'Network')
  browser.click_on 'Save'
end

#assign_networks(ops_manager) ⇒ Object



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 123

def assign_networks(ops_manager)
  if ops_manager.vcenter
    deployment_network = ops_manager.networks[0]

    infrastructure_network =
      ops_manager.networks[1] ? ops_manager.networks[1] : ops_manager.networks[0]

    assign_networks_vsphere(
      infrastructure_network: infrastructure_network['name'],
      deployment_network:     deployment_network['name'],
    )
  else
    assign_network(deployment_network: ops_manager.networks[0]['name'])
  end
end

#assign_networks_vsphere(infrastructure_network:, deployment_network:) ⇒ Object



146
147
148
149
150
151
152
153
154
155
156
157
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 146

def assign_networks_vsphere(infrastructure_network:, deployment_network:)
  browser.click_on 'Assign Networks'

  browser.within browser.find '#director_network_assignments_infrastructure_network' do
    browser.select infrastructure_network
  end

  browser.within browser.find '#director_network_assignments_deployment_network' do
    browser.select deployment_network
  end
  browser.click_on 'Save'
end

#config_director(ops_manager) ⇒ Object



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 82

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_iaas(test_settings) ⇒ Object



27
28
29
30
31
32
33
34
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 27

def configure_iaas(test_settings)
  iaas_configuration.open_form
  iaas_settings = Settings.for(test_settings)
  iaas_settings.fields.each do |name, value|
    iaas_configuration.set_field(name, value)
  end
  iaas_configuration.save_form
end

#configure_microbosh(test_settings) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 11

def configure_microbosh(test_settings)
  configure_iaas(test_settings)

  config_director(test_settings.ops_manager)

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

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

  add_networks(test_settings)

  assign_networks(test_settings.ops_manager)

  customize_resource_config(test_settings.ops_manager.resource_config)
end

#configure_vm_passwords(use_generated_passwords: true) ⇒ Object



166
167
168
169
170
171
172
173
174
175
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 166

def configure_vm_passwords(use_generated_passwords: true)
  browser.click_on 'VM Passwords'
  if use_generated_passwords
    browser.choose('Generate passwords')
  else
    browser.choose('Use default BOSH password')
  end
  browser.click_on 'Save'
  browser.wait { browser.has_text?('Settings updated') }
end

#customize_resource_config(resource_config) ⇒ Object



139
140
141
142
143
144
# File 'lib/ops_manager_ui_drivers/version15/ops_manager_director.rb', line 139

def customize_resource_config(resource_config)
  browser.click_on 'Resource Config'
  if resource_config
    browser.fill_in('product_resources_form[director][persistent_disk][value]', with: resource_config.persistent_disk)
  end
end