Class: Prof::OpsManager

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/prof/ops_manager.rb,
lib/prof/ops_manager/rails_500_error.rb,
lib/prof/ops_manager/web_app_internals.rb,
lib/prof/ops_manager/web_app_internals/page/form.rb,
lib/prof/ops_manager/web_app_internals/page/login.rb,
lib/prof/ops_manager/web_app_internals/page/modal.rb,
lib/prof/ops_manager/web_app_internals/page/dashboard.rb,
lib/prof/ops_manager/web_app_internals/page/rails_500.rb,
lib/prof/ops_manager/web_app_internals/page/form_error.rb,
lib/prof/ops_manager/web_app_internals/page/form_field.rb,
lib/prof/ops_manager/web_app_internals/page/click_field.rb,
lib/prof/ops_manager/web_app_internals/page/form_fields.rb,
lib/prof/ops_manager/web_app_internals/page/select_field.rb,
lib/prof/ops_manager/web_app_internals/page/flash_message.rb,
lib/prof/ops_manager/web_app_internals/page/tile_settings.rb,
lib/prof/ops_manager/web_app_internals/page/checkbox_field.rb,
lib/prof/ops_manager/web_app_internals/page/installation_progress.rb

Defined Under Namespace

Classes: InstallationError, NullLogFetcher, Rails500Error, WebAppInternals

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(url:, username:, password:, page: default_capybara_session, log_fetcher: null_log_fetcher, version: "1.6") ⇒ OpsManager



24
25
26
27
28
29
30
31
# File 'lib/prof/ops_manager.rb', line 24

def initialize(url:, username:, password:, page: default_capybara_session, log_fetcher: null_log_fetcher, version: "1.6")
  @url         = url
  @username    = username
  @password    = password
  @page        = page
  @log_fetcher = log_fetcher
  @version     = Gem::Version.new(version)
end

Instance Attribute Details

#urlObject (readonly)

Returns the value of attribute url.



33
34
35
# File 'lib/prof/ops_manager.rb', line 33

def url
  @url
end

Instance Method Details

#add_tile(tile) ⇒ Object



81
82
83
# File 'lib/prof/ops_manager.rb', line 81

def add_tile(tile)
  opsmanager_client.add_product(tile)
end

#browser {|page, url| ... } ⇒ Object

Add ability to get hold of the capybara session while transitioning code over to page objects

Yields:



56
57
58
# File 'lib/prof/ops_manager.rb', line 56

def browser(&_block)
  yield page, url
end

#product_tilesObject



91
92
93
# File 'lib/prof/ops_manager.rb', line 91

def product_tiles
  tiles.reject{|t| ['cf', 'microbosh', 'p-bosh'].include?(t.name) }
end

#setup_tile(tile) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
# File 'lib/prof/ops_manager.rb', line 69

def setup_tile(tile)
  puts "Adding #{tile.name}"
  add_tile(tile)

  puts "Installing update"
  apply_changes
rescue Rails500Error => e
  puts "FAILED: '#{e.message}'\n"
  logs = log_fetcher.fetch_logs('production.log', 500)
  raise Rails500Error, "#{e.message}\n---------------\n#{logs}"
end

#tilesObject



95
96
97
98
99
100
101
102
103
# File 'lib/prof/ops_manager.rb', line 95

def tiles
  opsmanager_client.send(:installed_products).map {|tempest_product|
    Tile.new(
      name:    tempest_product.type,
      version: tempest_product.version,
      guid:    tempest_product.guid
    )
  }
end

#uninstall_tile(*tile_or_tiles) ⇒ Object Also known as: uninstall_tiles



60
61
62
63
64
65
66
# File 'lib/prof/ops_manager.rb', line 60

def uninstall_tile(*tile_or_tiles)
  tiles = Array(tile_or_tiles).flatten
  return if tiles.empty?

  tiles.each { |t| web_app_internals.tile_uninstall(t) }
  web_app_internals.apply_changes
end

#upload_product(product) ⇒ Object



85
86
87
88
89
# File 'lib/prof/ops_manager.rb', line 85

def upload_product(product)
  puts "Uploading product #{product.name}"
  opsmanager_client.upload_product(product)
  Tile.new(name: product.name, version: product.version)
end

#vms_for_job_type(job_type) ⇒ Object



105
106
107
# File 'lib/prof/ops_manager.rb', line 105

def vms_for_job_type(job_type)
  opsmanager_client.vms_for_job_type(job_type)
end