Class: KPM::Installer

Inherits:
BaseInstaller show all
Defined in:
lib/kpm/installer.rb

Constant Summary

Constants inherited from BaseInstaller

BaseInstaller::DEFAULT_BUNDLES_DIR, BaseInstaller::LATEST_VERSION, BaseInstaller::SHA1_FILENAME

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseInstaller

#install_default_bundles, #install_kaui, #install_killbill_server, #install_plugin, #install_plugin_from_fs, #uninstall_plugin

Constructor Details

#initialize(raw_config, logger = nil) ⇒ Installer

Returns a new instance of Installer.



57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/kpm/installer.rb', line 57

def initialize(raw_config, logger=nil)
  @config = raw_config['killbill']
  @kaui_config = raw_config['kaui']

  if logger.nil?
    logger = Logger.new(STDOUT)
    logger.level = Logger::INFO
  end

  nexus_config = !@config.nil? ? @config['nexus'] : (!@kaui_config.nil? ? @kaui_config['nexus'] : nil)
  nexus_ssl_verify = !nexus_config.nil? ? nexus_config['ssl_verify'] : true

  super(logger, nexus_config, nexus_ssl_verify)
end

Class Method Details

.build_default_config(all_kb_versions = nil) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/kpm/installer.rb', line 18

def self.build_default_config(all_kb_versions=nil)
  latest_stable_version = get_kb_latest_stable_version(all_kb_versions)

  {
      'killbill' => {
          'version' => latest_stable_version.to_s,
          'plugins' => {
              'ruby' => [
                  {'name' => 'kpm'}
              ]
          }
      },
      'kaui' => {
          # Note: we assume no unstable version of Kaui is published today
          'version' => 'LATEST'
      }
  }
end

.from_file(config_path = nil, logger = nil) ⇒ Object



8
9
10
11
12
13
14
15
16
# File 'lib/kpm/installer.rb', line 8

def self.from_file(config_path=nil, logger=nil)
  if config_path.nil?
    # Install Kill Bill, Kaui and the KPM plugin by default
    config = build_default_config
  else
    config = YAML::load_file(config_path)
  end
  Installer.new(config, logger)
end

.get_kb_latest_stable_version(all_kb_versions = nil) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/kpm/installer.rb', line 37

def self.get_kb_latest_stable_version(all_kb_versions=nil)
  all_kb_versions ||= KillbillServerArtifact.versions(KillbillServerArtifact::KILLBILL_ARTIFACT_ID,
                                                      KillbillServerArtifact::KILLBILL_PACKAGING,
                                                      KillbillServerArtifact::KILLBILL_CLASSIFIER,
                                                      nil,
                                                      true).to_a
  latest_stable_version = Gem::Version.new('0.0.0')
  all_kb_versions.each do |kb_version|
    version = Gem::Version.new(kb_version) rescue nil
    next if version.nil?

    major, minor, patch, pre = version.segments
    next if !pre.nil? || minor.nil? || minor.to_i.odd?

    latest_stable_version = version if version > latest_stable_version
  end

  latest_stable_version
end

Instance Method Details

#install(force_download = false, verify_sha1 = true) ⇒ Object



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
# File 'lib/kpm/installer.rb', line 72

def install(force_download=false, verify_sha1=true)
  bundles_dir = !@config.nil? ? @config['plugins_dir'] : (!@kaui_config.nil? ? @kaui_config['plugins_dir'] : nil)
  bundles_dir ||= DEFAULT_BUNDLES_DIR

  help = nil
  unless @config.nil?
    help = install_tomcat if @config['webapp_path'].nil?
    install_killbill_server(@config['group_id'], @config['artifact_id'], @config['packaging'], @config['classifier'], @config['version'], @config['webapp_path'], bundles_dir, force_download, verify_sha1)
    install_plugins(bundles_dir, @config['version'], force_download, verify_sha1)
    unless @config['default_bundles'] == false
      install_default_bundles(bundles_dir, @config['default_bundles_version'], @config['version'], force_download, verify_sha1)
    end
    clean_up_descriptors(bundles_dir)
  end

  unless @kaui_config.nil?
    if @kaui_config['webapp_path'].nil?
      @logger.warn('No webapp_path specified for Kaui, aborting installation')
      return
    end

    install_kaui(@kaui_config['group_id'], @kaui_config['artifact_id'], @kaui_config['packaging'], @kaui_config['classifier'], @kaui_config['version'], @kaui_config['webapp_path'], bundles_dir, force_download, verify_sha1)
  end

  @trace_logger.add('help',help)
  @trace_logger.to_json
end