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

Returns a new instance of OpsManager.



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

def initialize(url:, username:, password:, page: default_capybara_session, log_fetcher: null_log_fetcher)
  @url         = url
  @username    = username
  @password    = password
  @page        = page
  @log_fetcher = log_fetcher
end

Instance Attribute Details

#urlObject (readonly)

Returns the value of attribute url.



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

def url
  @url
end

Instance Method Details

#add_tile(tile) ⇒ Object



79
80
81
# File 'lib/prof/ops_manager.rb', line 79

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:



54
55
56
# File 'lib/prof/ops_manager.rb', line 54

def browser(&_block)
  yield page, url
end

#product_tilesObject



89
90
91
# File 'lib/prof/ops_manager.rb', line 89

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

#setup_tile(tile) ⇒ Object



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

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



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

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



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

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



83
84
85
86
87
# File 'lib/prof/ops_manager.rb', line 83

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



103
104
105
# File 'lib/prof/ops_manager.rb', line 103

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