ops_manager_ui_drivers 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +10 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +3 -0
  5. data/Gemfile +4 -0
  6. data/LICENSE +13 -0
  7. data/README.md +39 -0
  8. data/Rakefile +12 -0
  9. data/bin/console +14 -0
  10. data/bin/setup +7 -0
  11. data/ci/run_specs.sh +11 -0
  12. data/lib/ops_manager_ui_drivers.rb +10 -0
  13. data/lib/ops_manager_ui_drivers/page_helpers.rb +52 -0
  14. data/lib/ops_manager_ui_drivers/version.rb +3 -0
  15. data/lib/ops_manager_ui_drivers/version11/api_1_1.rb +40 -0
  16. data/lib/ops_manager_ui_drivers/version11/available_products.rb +24 -0
  17. data/lib/ops_manager_ui_drivers/version11/install_progress.rb +24 -0
  18. data/lib/ops_manager_ui_drivers/version11/login.rb +24 -0
  19. data/lib/ops_manager_ui_drivers/version11/network_configuration.rb +31 -0
  20. data/lib/ops_manager_ui_drivers/version11/ntp_servers.rb +28 -0
  21. data/lib/ops_manager_ui_drivers/version11/ops_manager_director.rb +27 -0
  22. data/lib/ops_manager_ui_drivers/version11/product_dashboard.rb +73 -0
  23. data/lib/ops_manager_ui_drivers/version11/vcenter_credentials.rb +31 -0
  24. data/lib/ops_manager_ui_drivers/version11/vsphere_configuration.rb +31 -0
  25. data/lib/ops_manager_ui_drivers/version11/web_ui.rb +34 -0
  26. data/lib/ops_manager_ui_drivers/version12/api_1_2.rb +40 -0
  27. data/lib/ops_manager_ui_drivers/version12/available_products.rb +24 -0
  28. data/lib/ops_manager_ui_drivers/version12/install_progress.rb +24 -0
  29. data/lib/ops_manager_ui_drivers/version12/login.rb +24 -0
  30. data/lib/ops_manager_ui_drivers/version12/network_configuration.rb +32 -0
  31. data/lib/ops_manager_ui_drivers/version12/ntp_servers.rb +28 -0
  32. data/lib/ops_manager_ui_drivers/version12/ops_manager_director.rb +27 -0
  33. data/lib/ops_manager_ui_drivers/version12/product_dashboard.rb +73 -0
  34. data/lib/ops_manager_ui_drivers/version12/vcenter_credentials.rb +31 -0
  35. data/lib/ops_manager_ui_drivers/version12/vsphere_configuration.rb +30 -0
  36. data/lib/ops_manager_ui_drivers/version12/web_ui.rb +34 -0
  37. data/lib/ops_manager_ui_drivers/version13/api_1_3.rb +40 -0
  38. data/lib/ops_manager_ui_drivers/version13/availability_zones.rb +55 -0
  39. data/lib/ops_manager_ui_drivers/version13/available_products.rb +24 -0
  40. data/lib/ops_manager_ui_drivers/version13/iaas_configuration.rb +65 -0
  41. data/lib/ops_manager_ui_drivers/version13/install_progress.rb +43 -0
  42. data/lib/ops_manager_ui_drivers/version13/job_availability_zone_mapping_helper.rb +70 -0
  43. data/lib/ops_manager_ui_drivers/version13/job_network_mapping_helper.rb +47 -0
  44. data/lib/ops_manager_ui_drivers/version13/job_status_helper.rb +17 -0
  45. data/lib/ops_manager_ui_drivers/version13/networks.rb +83 -0
  46. data/lib/ops_manager_ui_drivers/version13/ops_manager_director.rb +140 -0
  47. data/lib/ops_manager_ui_drivers/version13/product_availability_zones.rb +38 -0
  48. data/lib/ops_manager_ui_drivers/version13/product_dashboard.rb +157 -0
  49. data/lib/ops_manager_ui_drivers/version13/product_logs.rb +53 -0
  50. data/lib/ops_manager_ui_drivers/version13/product_resource_configuration.rb +46 -0
  51. data/lib/ops_manager_ui_drivers/version13/product_status_helper.rb +64 -0
  52. data/lib/ops_manager_ui_drivers/version13/setup.rb +40 -0
  53. data/lib/ops_manager_ui_drivers/version13/web_ui.rb +106 -0
  54. data/lib/ops_manager_ui_drivers/version14/api_1_4.rb +40 -0
  55. data/lib/ops_manager_ui_drivers/version14/availability_zones.rb +59 -0
  56. data/lib/ops_manager_ui_drivers/version14/available_products.rb +24 -0
  57. data/lib/ops_manager_ui_drivers/version14/iaas_configuration.rb +89 -0
  58. data/lib/ops_manager_ui_drivers/version14/job_availability_zone_mapping_helper.rb +70 -0
  59. data/lib/ops_manager_ui_drivers/version14/job_network_mapping_helper.rb +47 -0
  60. data/lib/ops_manager_ui_drivers/version14/job_status_helper.rb +17 -0
  61. data/lib/ops_manager_ui_drivers/version14/networks.rb +58 -0
  62. data/lib/ops_manager_ui_drivers/version14/ops_manager_director.rb +252 -0
  63. data/lib/ops_manager_ui_drivers/version14/product_availability_zones.rb +38 -0
  64. data/lib/ops_manager_ui_drivers/version14/product_configuration.rb +34 -0
  65. data/lib/ops_manager_ui_drivers/version14/product_dashboard.rb +175 -0
  66. data/lib/ops_manager_ui_drivers/version14/product_form.rb +47 -0
  67. data/lib/ops_manager_ui_drivers/version14/product_logs.rb +38 -0
  68. data/lib/ops_manager_ui_drivers/version14/product_resource_configuration.rb +46 -0
  69. data/lib/ops_manager_ui_drivers/version14/product_status_helper.rb +64 -0
  70. data/lib/ops_manager_ui_drivers/version14/setup.rb +40 -0
  71. data/lib/ops_manager_ui_drivers/version14/state_change_progress.rb +43 -0
  72. data/lib/ops_manager_ui_drivers/version14/web_ui.rb +104 -0
  73. data/lib/ops_manager_ui_drivers/version15/availability_zones.rb +59 -0
  74. data/lib/ops_manager_ui_drivers/version15/available_products.rb +24 -0
  75. data/lib/ops_manager_ui_drivers/version15/iaas_configuration.rb +105 -0
  76. data/lib/ops_manager_ui_drivers/version15/job_availability_zone_mapping_helper.rb +70 -0
  77. data/lib/ops_manager_ui_drivers/version15/job_network_mapping_helper.rb +47 -0
  78. data/lib/ops_manager_ui_drivers/version15/job_status_helper.rb +17 -0
  79. data/lib/ops_manager_ui_drivers/version15/networks.rb +55 -0
  80. data/lib/ops_manager_ui_drivers/version15/ops_manager_director.rb +261 -0
  81. data/lib/ops_manager_ui_drivers/version15/product_availability_zones.rb +38 -0
  82. data/lib/ops_manager_ui_drivers/version15/product_configuration.rb +34 -0
  83. data/lib/ops_manager_ui_drivers/version15/product_dashboard.rb +176 -0
  84. data/lib/ops_manager_ui_drivers/version15/product_form.rb +47 -0
  85. data/lib/ops_manager_ui_drivers/version15/product_logs.rb +38 -0
  86. data/lib/ops_manager_ui_drivers/version15/product_resource_configuration.rb +63 -0
  87. data/lib/ops_manager_ui_drivers/version15/product_status_helper.rb +64 -0
  88. data/lib/ops_manager_ui_drivers/version15/setup.rb +44 -0
  89. data/lib/ops_manager_ui_drivers/version15/state_change_progress.rb +43 -0
  90. data/lib/ops_manager_ui_drivers/version15/web_ui.rb +104 -0
  91. data/lib/ops_manager_ui_drivers/wait_helper.rb +51 -0
  92. data/ops_manager_ui_drivers.gemspec +29 -0
  93. metadata +233 -0
@@ -0,0 +1,24 @@
1
+ module OpsManagerUiDrivers
2
+ module Version15
3
+ class AvailableProducts
4
+ def initialize(browser:)
5
+ @browser = browser
6
+ end
7
+
8
+ def add_product_to_install(product_name)
9
+ browser.visit '/'
10
+ browser.click_on "add-#{product_name}"
11
+ end
12
+
13
+ def product_added?(product_name)
14
+ browser.visit '/'
15
+ browser.all("#show-configure-#{product_name}-action").any?
16
+ end
17
+
18
+ private
19
+
20
+ attr_reader :browser
21
+
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,105 @@
1
+ module OpsManagerUiDrivers
2
+ module Version15
3
+ class IaasConfiguration
4
+ def initialize(browser:)
5
+ @browser = browser
6
+ end
7
+
8
+ def configure_iaas
9
+ open_form('iaas_configuration')
10
+
11
+ yield
12
+
13
+ save_form
14
+ end
15
+
16
+ def set_vsphere_credentials(vcenter_ip:, username:, password:)
17
+ set_field('vcenter_ip', vcenter_ip)
18
+ set_field('vcenter_username', username)
19
+ set_field('vcenter_password', password)
20
+ end
21
+
22
+ def set_vcloud_credentials(vcd_url:, organization:, user:, password:)
23
+ set_field('vcd_url', vcd_url)
24
+ set_field('organization', organization)
25
+ set_field('vcd_username', user)
26
+ set_field('vcd_password', password)
27
+ end
28
+
29
+ def set_aws_credentials(access_key_id:, secret_access_key:, vpc_id:, security_group:, key_pair_name:, ssh_private_key:)
30
+ set_field('access_key_id', access_key_id)
31
+ set_field('secret_access_key', secret_access_key)
32
+ set_field('vpc_id', vpc_id)
33
+ set_field('security_group', security_group)
34
+ set_field('key_pair_name', key_pair_name)
35
+ set_field('ssh_private_key', ssh_private_key)
36
+ end
37
+
38
+ def set_openstack_credentials(
39
+ identity_endpoint:,
40
+ username:,
41
+ password:,
42
+ tenant:,
43
+ security_group_name:,
44
+ key_pair_name:,
45
+ ssh_private_key:
46
+ )
47
+ set_field('identity_endpoint', identity_endpoint)
48
+ set_field('username', username)
49
+ set_field('password', password)
50
+ set_field('tenant', tenant)
51
+ set_field('security_group', security_group_name)
52
+ set_field('key_pair_name', key_pair_name)
53
+ set_field('ssh_private_key', ssh_private_key)
54
+ end
55
+
56
+
57
+ def set_datacenter(datacenter)
58
+ set_field('datacenter', datacenter)
59
+ end
60
+
61
+ def set_datastores(datastores)
62
+ set_field('datastores_string', datastores)
63
+ end
64
+
65
+ def set_microbosh_vm_folder(microbosh_vm_folder)
66
+ set_field('microbosh_vm_folder', microbosh_vm_folder)
67
+ end
68
+
69
+ def set_microbosh_template_folder(microbosh_template_folder)
70
+ set_field('microbosh_template_folder', microbosh_template_folder)
71
+ end
72
+
73
+ def set_microbosh_disk_path(microbosh_disk_path)
74
+ set_field('microbosh_disk_path', microbosh_disk_path)
75
+ end
76
+
77
+ def set_storage_profile(storage_profile)
78
+ set_field('storage_profile', storage_profile)
79
+ end
80
+
81
+ def set_catalog_name(catalog_name)
82
+ set_field('catalog_name', catalog_name)
83
+ end
84
+
85
+ private
86
+
87
+ attr_reader :browser
88
+
89
+ def save_form
90
+ browser.click_on 'Save'
91
+ browser.expect(browser.page).to browser.have_css('.flash-message.success')
92
+ end
93
+
94
+ def open_form(form)
95
+ browser.visit '/'
96
+ browser.click_on 'show-microbosh-configure-action'
97
+ browser.click_on "show-#{form}-action"
98
+ end
99
+
100
+ def set_field(field, value)
101
+ browser.find_field("iaas_configuration[#{field}]").set(value)
102
+ end
103
+ end
104
+ end
105
+ end
@@ -0,0 +1,70 @@
1
+ module OpsManagerUiDrivers
2
+ module Version15
3
+ class JobAvailabilityZoneMappingHelper
4
+ def initialize(product_name: nil, browser: nil)
5
+ @product_name = product_name
6
+ @browser = browser
7
+ end
8
+
9
+ SINGLETON_AVAILABILITY_ZONE_INPUT_SELECTOR = "input[name='product[singleton_availability_zone_reference]']"
10
+ AVAILABILITY_ZONE_INPUT_SELECTOR = "input[name='product[availability_zone_references][]']"
11
+
12
+ def assign_availability_zones!(singleton_availability_zone:, availability_zones:)
13
+ open_form
14
+
15
+ browser.all(AVAILABILITY_ZONE_INPUT_SELECTOR).each do |checkbox|
16
+ checkbox.set(false)
17
+ end
18
+
19
+ availability_zones.each do |az_name|
20
+ browser.check("#{az_name}")
21
+ end
22
+
23
+ browser.choose("#{singleton_availability_zone}")
24
+
25
+ save_form
26
+ end
27
+
28
+ def singleton_availability_zone
29
+ open_form
30
+
31
+ selected_options = browser.all("#{SINGLETON_AVAILABILITY_ZONE_INPUT_SELECTOR}[selected='selected']").map do |radio|
32
+ browser.find("label[for='#{radio[:id]}']").text
33
+ end
34
+
35
+ raise ArgumentError, 'availability_zone not selected' if selected_options.empty?
36
+ selected_options.first
37
+ end
38
+
39
+ def availability_zones
40
+ open_form
41
+
42
+ browser.all("#{AVAILABILITY_ZONE_INPUT_SELECTOR}[checked='checked']").map do |checkbox|
43
+ browser.find("label[for='#{checkbox[:id]}']").text
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ attr_reader :browser, :product_name
50
+
51
+ def open_form
52
+ browser.visit '/'
53
+ browser.click_on "show-#{product_name}-configure-action"
54
+ browser.click_on "show-#{product_name}-availability-zone-assignment-action"
55
+ end
56
+
57
+ def save_form
58
+ browser.click_on 'Save'
59
+
60
+ unless browser.has_css?('.flash-message.success')
61
+ if browser.has_css?('.flash-message.error')
62
+ raise browser.find('.flash-message.error').text
63
+ else
64
+ raise 'unexpected failure'
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,47 @@
1
+ module OpsManagerUiDrivers
2
+ module Version15
3
+ class JobNetworkMappingHelper
4
+ PRODUCT_NETWORK_FIELD_NAME = 'product_network_assignment'
5
+
6
+ def initialize(product_name:, browser:)
7
+ @product_name = product_name
8
+ @browser = browser
9
+ end
10
+
11
+ def assign_product_to_network(network)
12
+ open_form
13
+ browser.find_field(PRODUCT_NETWORK_FIELD_NAME).find(:option, text: network).select_option
14
+ save_form
15
+ end
16
+
17
+ def product_network
18
+ open_form
19
+ selected_options = browser.find_field(PRODUCT_NETWORK_FIELD_NAME).all('option[selected]')
20
+ raise ArgumentError, "#{PRODUCT_NETWORK_FIELD_NAME} not selected" if selected_options.empty?
21
+ selected_options.first.text
22
+ end
23
+
24
+ private
25
+
26
+ attr_reader :product_name, :browser
27
+
28
+ def open_form
29
+ browser.visit '/'
30
+ browser.click_on "show-#{product_name}-configure-action"
31
+ browser.click_on "show-#{product_name}-network-assignment-action"
32
+ end
33
+
34
+ def save_form
35
+ browser.click_on 'Save'
36
+
37
+ unless browser.has_css?('.flash-message.success')
38
+ if browser.has_css?('.flash-message.error')
39
+ raise browser.find('.flash-message.error').text
40
+ else
41
+ raise 'unexpected failure'
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,17 @@
1
+ module OpsManagerUiDrivers
2
+ module Version15
3
+ class JobStatusHelper
4
+ def self.from_job_row(job_row)
5
+ ips_string = job_row.find('.actual-ips').text
6
+ ips = ips_string.split(', ')
7
+ new(ips: ips)
8
+ end
9
+
10
+ def initialize(ips:)
11
+ @ips = ips
12
+ end
13
+
14
+ attr_reader :ips
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,55 @@
1
+ module OpsManagerUiDrivers
2
+ module Version15
3
+ class Networks
4
+ def initialize(browser:)
5
+ @browser = browser
6
+ end
7
+
8
+ def add_network(name:, iaas_network_identifier:, subnet:, dns:, gateway:, reserved_ip_ranges:)
9
+ open_form('network')
10
+
11
+ browser.click_on 'Add'
12
+ set_fields(
13
+ fields: {
14
+ 'name' => name,
15
+ 'iaas_network_identifier' => iaas_network_identifier,
16
+ 'subnet' => subnet,
17
+ 'dns' => dns,
18
+ 'gateway' => gateway,
19
+ 'reserved_ip_ranges' => reserved_ip_ranges,
20
+ }
21
+ )
22
+ save_form
23
+ end
24
+
25
+ private
26
+
27
+ attr_reader :browser
28
+
29
+ def save_form
30
+ browser.click_on 'Save'
31
+ browser.expect(browser.page).to browser.have_css('.flash-message.success')
32
+ end
33
+
34
+ def open_form(form)
35
+ browser.visit '/'
36
+ browser.click_on 'show-microbosh-configure-action'
37
+ browser.click_on "show-#{form}-action"
38
+ end
39
+
40
+ def set_fields(fields:)
41
+ fields.each do |field, value|
42
+ set_field(field, value)
43
+ end
44
+ end
45
+
46
+ def set_field(field, value)
47
+ last_field(field).set(value)
48
+ end
49
+
50
+ def last_field(field)
51
+ browser.all(:field, "network[networks][][#{field}]").last
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,261 @@
1
+ module OpsManagerUiDrivers
2
+ module Version15
3
+ class OpsManagerDirector
4
+ def initialize(browser:)
5
+ @browser = browser
6
+ end
7
+
8
+ def configure_microbosh(test_settings)
9
+ configure_iaas(test_settings)
10
+
11
+ config_director(test_settings.ops_manager)
12
+
13
+ add_azs(test_settings.iaas_type, test_settings.ops_manager.availability_zones)
14
+
15
+ assign_availability_zone(test_settings.iaas_type, test_settings.ops_manager.availability_zones)
16
+
17
+ add_networks(test_settings)
18
+
19
+ assign_networks(test_settings.ops_manager)
20
+ end
21
+
22
+ def configure_iaas(test_settings)
23
+ case test_settings.iaas_type
24
+ when OpsManagerUiDrivers::VCLOUD_IAAS_TYPE then
25
+ configure_vcloud(
26
+ vcd_url: test_settings.ops_manager.vcloud.creds.url,
27
+ organization: test_settings.ops_manager.vcloud.creds.organization,
28
+ user: test_settings.ops_manager.vcloud.creds.user,
29
+ password: test_settings.ops_manager.vcloud.creds.password,
30
+ datacenter: test_settings.ops_manager.vcloud.vdc.name,
31
+ storage_profile: test_settings.ops_manager.vcloud.vdc.storage_profile,
32
+ catalog_name: test_settings.ops_manager.vcloud.vdc.catalog_name,
33
+ )
34
+ when OpsManagerUiDrivers::VSPHERE_IAAS_TYPE then
35
+ configure_vcenter(
36
+ ip: test_settings.ops_manager.vcenter.creds.ip,
37
+ username: test_settings.ops_manager.vcenter.creds.username,
38
+ password: test_settings.ops_manager.vcenter.creds.password,
39
+ datacenter: test_settings.ops_manager.vcenter.datacenter,
40
+ datastores: test_settings.ops_manager.vcenter.datastore,
41
+ microbosh_vm_folder: test_settings.ops_manager.vcenter.microbosh_vm_folder,
42
+ microbosh_template_folder: test_settings.ops_manager.vcenter.microbosh_template_folder,
43
+ microbosh_disk_path: test_settings.ops_manager.vcenter.microbosh_disk_path,
44
+ )
45
+ when OpsManagerUiDrivers::AWS_IAAS_TYPE then
46
+ configure_aws(
47
+ aws_access_key: test_settings.ops_manager.aws.aws_access_key,
48
+ aws_secret_key: test_settings.ops_manager.aws.aws_secret_key,
49
+ vpc_id: test_settings.ops_manager.aws.vpc_id,
50
+ security_group: test_settings.ops_manager.aws.security_group,
51
+ key_pair_name: test_settings.ops_manager.aws.key_pair_name,
52
+ ssh_private_key: test_settings.ops_manager.aws.ssh_key
53
+ )
54
+ when OpsManagerUiDrivers::OPENSTACK_IAAS_TYPE then
55
+ configure_openstack(
56
+ identity_endpoint: test_settings.ops_manager.openstack.identity_endpoint,
57
+ username: test_settings.ops_manager.openstack.username,
58
+ password: test_settings.ops_manager.openstack.password,
59
+ tenant: test_settings.ops_manager.openstack.tenant,
60
+ security_group_name: test_settings.ops_manager.openstack.security_group_name,
61
+ key_pair_name: test_settings.ops_manager.openstack.key_pair_name,
62
+ ssh_private_key: test_settings.ops_manager.openstack.ssh_private_key
63
+ )
64
+ end
65
+ end
66
+
67
+ def add_azs(iaas_type, iaas_availability_zones)
68
+ case iaas_type
69
+ when OpsManagerUiDrivers::AWS_IAAS_TYPE then
70
+ return unless iaas_availability_zones
71
+ availability_zones.add_aws_az(iaas_availability_zones.first['iaas_identifier'])
72
+ else
73
+ iaas_availability_zones && iaas_availability_zones.each do |az|
74
+ availability_zones.add_az(az['name'], az['cluster'], az['resource_pool'])
75
+ end
76
+ end
77
+ end
78
+
79
+ def add_networks(test_settings)
80
+ iaas_networks = test_settings.ops_manager.networks
81
+
82
+ case test_settings.iaas_type
83
+ when OpsManagerUiDrivers::AWS_IAAS_TYPE, OpsManagerUiDrivers::OPENSTACK_IAAS_TYPE then
84
+ first_network = iaas_networks.first
85
+ browser.click_on 'show-network-action'
86
+ browser.fill_in 'network[networks][][name]', with: first_network['name']
87
+ browser.fill_in 'network[networks][][iaas_network_identifier]', with: first_network['identifier']
88
+ browser.fill_in 'network[networks][][subnet]', with: first_network['subnet']
89
+ browser.fill_in 'network[networks][][reserved_ip_ranges]', with: first_network['reserved_ips']
90
+ browser.fill_in 'network[networks][][dns]', with: first_network['dns']
91
+ browser.fill_in 'network[networks][][gateway]', with: first_network['gateway']
92
+ browser.click_on 'Save'
93
+ flash_errors = browser.all('.flash-message.error ul.message li').to_a
94
+ flash_errors.reject! { |node| node.text =~ /cannot reach gateway/i }
95
+
96
+ if (flash_errors.length > 0)
97
+ fail flash_errors.collect(&:text).inspect
98
+ end
99
+ else
100
+ iaas_networks && iaas_networks.each do |network|
101
+ networks.add_network(
102
+ name: network['name'],
103
+ iaas_network_identifier: network['identifier'],
104
+ subnet: network['subnet'],
105
+ reserved_ip_ranges: network['reserved_ips'],
106
+ dns: network['dns'],
107
+ gateway: network['gateway'],
108
+ )
109
+ end
110
+ end
111
+ end
112
+
113
+ def config_director(ops_manager)
114
+ browser.click_on 'Director Config'
115
+ browser.fill_in('director_configuration[ntp_servers_string]', with: ops_manager.ntp_servers)
116
+
117
+ s3_blobstore = ops_manager.s3_blobstore
118
+ if s3_blobstore
119
+ browser.choose('S3 Compatible Blobstore')
120
+ browser.fill_in('director_configuration[s3_blobstore_options][endpoint]', with: s3_blobstore.endpoint)
121
+ browser.fill_in('director_configuration[s3_blobstore_options][bucket_name]', with: s3_blobstore.bucket_name)
122
+ browser.fill_in('director_configuration[s3_blobstore_options][access_key]', with: s3_blobstore.access_key_id)
123
+ browser.fill_in('director_configuration[s3_blobstore_options][secret_key]', with: s3_blobstore.secret_access_key)
124
+ end
125
+
126
+ mysql = ops_manager.mysql
127
+ if mysql
128
+ browser.choose('External MySQL Database')
129
+ browser.fill_in('director_configuration[external_database_options][host]', with: mysql.host)
130
+ browser.fill_in('director_configuration[external_database_options][port]', with: mysql.port)
131
+ browser.fill_in('director_configuration[external_database_options][user]', with: mysql.user)
132
+ browser.fill_in('director_configuration[external_database_options][password]', with: mysql.password)
133
+ browser.fill_in('director_configuration[external_database_options][database]', with: mysql.dbname)
134
+ end
135
+
136
+ browser.click_on 'Save'
137
+ end
138
+
139
+ def assign_availability_zone(iaas_type, iaas_availability_zones)
140
+ return unless iaas_availability_zones
141
+ case iaas_type
142
+ when OpsManagerUiDrivers::AWS_IAAS_TYPE then
143
+ browser.click_on 'Assign Availability Zones'
144
+ browser.select(iaas_availability_zones.first['iaas_identifier'])
145
+ browser.click_on 'Save'
146
+ when OpsManagerUiDrivers::VSPHERE_IAAS_TYPE
147
+ browser.click_on 'Assign Availability Zones'
148
+ browser.select(iaas_availability_zones.first['name'])
149
+ browser.click_on 'Save'
150
+ end
151
+
152
+ end
153
+
154
+ def assign_networks(ops_manager)
155
+ if ops_manager.vcenter
156
+ deployment_network = ops_manager.networks[0]
157
+
158
+ infrastructure_network =
159
+ ops_manager.networks[1] ? ops_manager.networks[1] : ops_manager.networks[0]
160
+
161
+ assign_networks_vsphere(
162
+ infrastructure_network: infrastructure_network['name'],
163
+ deployment_network: deployment_network['name'],
164
+ )
165
+ else
166
+ assign_network(deployment_network: ops_manager.networks[0]['name'])
167
+ end
168
+ end
169
+
170
+ def assign_networks_vsphere(infrastructure_network:, deployment_network:)
171
+ browser.click_on 'Assign Networks'
172
+
173
+ browser.within browser.find '#director_network_assignments_infrastructure_network' do
174
+ browser.select infrastructure_network
175
+ end
176
+
177
+ browser.within browser.find '#director_network_assignments_deployment_network' do
178
+ browser.select deployment_network
179
+ end
180
+ browser.click_on 'Save'
181
+ end
182
+
183
+ def assign_network(deployment_network:)
184
+ browser.click_on 'Assign Networks'
185
+
186
+ browser.select(deployment_network, from: 'Network')
187
+ browser.click_on 'Save'
188
+ end
189
+
190
+ private
191
+ attr_reader :browser
192
+
193
+ def configure_vcenter(ip:, username:, password:, datacenter:, datastores:, microbosh_vm_folder:, microbosh_template_folder:, microbosh_disk_path:)
194
+ iaas_configuration.configure_iaas do
195
+ iaas_configuration.set_vsphere_credentials(vcenter_ip: ip, username: username, password: password)
196
+ iaas_configuration.set_datacenter(datacenter)
197
+ iaas_configuration.set_datastores(datastores)
198
+ iaas_configuration.set_microbosh_vm_folder(microbosh_vm_folder)
199
+ iaas_configuration.set_microbosh_template_folder(microbosh_template_folder)
200
+ iaas_configuration.set_microbosh_disk_path(microbosh_disk_path)
201
+ end
202
+ end
203
+
204
+ def configure_vcloud(vcd_url:, organization:, user:, password:, datacenter:, storage_profile:, catalog_name:)
205
+ iaas_configuration.configure_iaas do
206
+ iaas_configuration.set_vcloud_credentials(vcd_url: vcd_url, organization: organization, user: user, password: password)
207
+ iaas_configuration.set_datacenter(datacenter)
208
+ iaas_configuration.set_storage_profile(storage_profile)
209
+ iaas_configuration.set_catalog_name(catalog_name)
210
+ end
211
+ end
212
+
213
+ def configure_aws(aws_access_key:, aws_secret_key:, vpc_id:, security_group:, key_pair_name:, ssh_private_key:)
214
+ iaas_configuration.configure_iaas do
215
+ iaas_configuration.set_aws_credentials(
216
+ access_key_id: aws_access_key,
217
+ secret_access_key: aws_secret_key,
218
+ vpc_id: vpc_id,
219
+ security_group: security_group,
220
+ key_pair_name: key_pair_name,
221
+ ssh_private_key: ssh_private_key
222
+ )
223
+ end
224
+ end
225
+
226
+ def configure_openstack(
227
+ identity_endpoint:,
228
+ username:,
229
+ password:,
230
+ tenant:,
231
+ security_group_name:,
232
+ key_pair_name:,
233
+ ssh_private_key:
234
+ )
235
+ iaas_configuration.configure_iaas do
236
+ iaas_configuration.set_openstack_credentials(
237
+ identity_endpoint: identity_endpoint,
238
+ username: username,
239
+ password: password,
240
+ tenant: tenant,
241
+ security_group_name: security_group_name,
242
+ key_pair_name: key_pair_name,
243
+ ssh_private_key: ssh_private_key
244
+ )
245
+ end
246
+ end
247
+
248
+ def iaas_configuration
249
+ @iaas_configuration ||= Version15::IaasConfiguration.new(browser: browser)
250
+ end
251
+
252
+ def availability_zones
253
+ @availability_zones ||= Version15::AvailabilityZones.new(browser: browser)
254
+ end
255
+
256
+ def networks
257
+ @networks ||= Version15::Networks.new(browser: browser)
258
+ end
259
+ end
260
+ end
261
+ end