kpm 0.5.3 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/kpm.gemspec +0 -1
- data/lib/kpm.rb +4 -1
- data/lib/kpm/base_artifact.rb +24 -8
- data/lib/kpm/base_installer.rb +35 -3
- data/lib/kpm/diagnostic_file.rb +187 -0
- data/lib/kpm/installer.rb +10 -3
- data/lib/kpm/kaui_artifact.rb +1 -1
- data/lib/kpm/killbill_plugin_artifact.rb +1 -1
- data/lib/kpm/killbill_server_artifact.rb +1 -1
- data/lib/kpm/nexus_helper/actions.rb +34 -0
- data/lib/kpm/nexus_helper/nexus_api_calls_v2.rb +188 -0
- data/lib/kpm/nexus_helper/nexus_facade.rb +20 -0
- data/lib/kpm/plugins_directory.yml +6 -1
- data/lib/kpm/system.rb +80 -53
- data/lib/kpm/system_helpers/cpu_information.rb +72 -0
- data/lib/kpm/system_helpers/disk_space_information.rb +84 -0
- data/lib/kpm/system_helpers/entropy_available.rb +52 -0
- data/lib/kpm/system_helpers/memory_information.rb +71 -0
- data/lib/kpm/system_helpers/os_information.rb +66 -0
- data/lib/kpm/system_helpers/system_proxy.rb +28 -0
- data/lib/kpm/tasks.rb +101 -2
- data/lib/kpm/trace_logger.rb +70 -0
- data/lib/kpm/utils.rb +42 -0
- data/lib/kpm/version.rb +1 -1
- data/pom.xml +1 -1
- data/spec/kpm/remote/base_artifact_spec.rb +20 -0
- data/spec/kpm/remote/base_installer_spec.rb +15 -0
- data/spec/kpm/remote/installer_spec.rb +10 -2
- data/spec/kpm/remote/migrations_spec.rb +1 -1
- data/spec/kpm/remote/nexus_facade_spec.rb +60 -0
- data/spec/spec_helper.rb +1 -0
- metadata +14 -16
@@ -0,0 +1,70 @@
|
|
1
|
+
require 'json'
|
2
|
+
|
3
|
+
module KPM
|
4
|
+
class TraceLogger
|
5
|
+
def initialize
|
6
|
+
@trace = Hash.new
|
7
|
+
end
|
8
|
+
|
9
|
+
# Return JSON representation of the logs
|
10
|
+
def to_json
|
11
|
+
@trace.to_json
|
12
|
+
end
|
13
|
+
|
14
|
+
# Return String representation of the logs
|
15
|
+
def to_s
|
16
|
+
@trace.to_s
|
17
|
+
end
|
18
|
+
|
19
|
+
# Return HASH representation of the logs
|
20
|
+
def to_hash
|
21
|
+
@trace
|
22
|
+
end
|
23
|
+
|
24
|
+
def add(group=nil, key, message)
|
25
|
+
add_to_hash(group,key,message);
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
# This procedures will store the logs into a hash to be later returned
|
30
|
+
def add_to_hash(group=nil, key, message)
|
31
|
+
|
32
|
+
if group.nil? || key.nil?
|
33
|
+
add_with_key(group || key, message)
|
34
|
+
else
|
35
|
+
container_key = group.to_sym
|
36
|
+
|
37
|
+
@trace[container_key] ||= Hash.new
|
38
|
+
child_key = key.to_sym
|
39
|
+
|
40
|
+
unless @trace[container_key][child_key].nil?
|
41
|
+
child_is_an_array = @trace[container_key][child_key].kind_of?(Array)
|
42
|
+
|
43
|
+
old_message = nil
|
44
|
+
old_message = @trace[container_key][child_key] unless child_is_an_array
|
45
|
+
@trace[container_key][child_key] = [] unless child_is_an_array
|
46
|
+
@trace[container_key][child_key].push(old_message) unless old_message.nil?
|
47
|
+
@trace[container_key][child_key].push(message)
|
48
|
+
else
|
49
|
+
@trace[container_key][child_key] = message
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def add_with_key(key, message)
|
55
|
+
child_key = key.to_sym
|
56
|
+
|
57
|
+
unless @trace[child_key].nil?
|
58
|
+
child_is_an_array = @trace[child_key].kind_of?(Array)
|
59
|
+
|
60
|
+
old_message = nil
|
61
|
+
old_message = @trace[child_key] unless child_is_an_array
|
62
|
+
@trace[child_key] = [] unless child_is_an_array
|
63
|
+
@trace[child_key].push(old_message) unless old_message.nil?
|
64
|
+
@trace[child_key].push(message)
|
65
|
+
else
|
66
|
+
@trace[child_key] = message
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/kpm/utils.rb
CHANGED
@@ -43,6 +43,48 @@ module KPM
|
|
43
43
|
def path_with_skipped_top_level_dir(path)
|
44
44
|
Pathname(path).each_filename.to_a[1..-1].join(File::SEPARATOR)
|
45
45
|
end
|
46
|
+
|
47
|
+
def peek_tgz_file_names(tar_gz_archive)
|
48
|
+
file_names = []
|
49
|
+
Gem::Package::TarReader.new(Zlib::GzipReader.open(tar_gz_archive)) do |tar|
|
50
|
+
tar.each do |entry|
|
51
|
+
if entry.file?
|
52
|
+
file_names.push entry.full_name
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
file_names
|
58
|
+
end
|
59
|
+
|
60
|
+
def get_plugin_name_from_file_path(file_path)
|
61
|
+
base = File.basename(file_path).to_s
|
62
|
+
ver = get_version_from_file_path(file_path)
|
63
|
+
ext = File.extname(base)
|
64
|
+
|
65
|
+
name = base.gsub(ext,'')
|
66
|
+
if ver.nil?
|
67
|
+
# this will remove SNAPSHOT and any dash that appear before it (ex --SNAPSHOT).
|
68
|
+
name = name.gsub(/((-+){,1}SNAPSHOT){,1}/,'')
|
69
|
+
last_dash = name.rindex('-')
|
70
|
+
name = name[0..last_dash]
|
71
|
+
else
|
72
|
+
name = name.gsub(ver,'')
|
73
|
+
end
|
74
|
+
|
75
|
+
name = name[0..name.length-2] if name[-1].match(/[a-zA-z]/).nil?
|
76
|
+
name
|
77
|
+
end
|
78
|
+
|
79
|
+
def get_version_from_file_path(file_path)
|
80
|
+
base = File.basename(file_path).to_s
|
81
|
+
ver = base.match(/(\d+)(\.(\d+)){,6}((-+){,1}SNAPSHOT){,1}/)
|
82
|
+
|
83
|
+
return ver if ver.nil?
|
84
|
+
|
85
|
+
ver[0]
|
86
|
+
end
|
87
|
+
|
46
88
|
end
|
47
89
|
end
|
48
90
|
end
|
data/lib/kpm/version.rb
CHANGED
data/pom.xml
CHANGED
@@ -26,7 +26,7 @@
|
|
26
26
|
<groupId>org.kill-bill.billing.installer</groupId>
|
27
27
|
<artifactId>kpm</artifactId>
|
28
28
|
<packaging>pom</packaging>
|
29
|
-
<version>0.
|
29
|
+
<version>0.6.0</version>
|
30
30
|
<name>KPM</name>
|
31
31
|
<url>http://github.com/killbill/killbill-cloud</url>
|
32
32
|
<description>KPM: the Kill Bill Package Manager</description>
|
@@ -46,6 +46,26 @@ describe KPM::BaseArtifact do
|
|
46
46
|
end
|
47
47
|
end
|
48
48
|
|
49
|
+
it 'should be able to download and remove previous version artifacts' do
|
50
|
+
group_id = 'org.kill-bill.billing'
|
51
|
+
artifact_id = 'killbill-platform-osgi-bundles-defaultbundles'
|
52
|
+
packaging = 'tar.gz'
|
53
|
+
classifier = nil
|
54
|
+
version = '0.36.2'
|
55
|
+
|
56
|
+
second_bundle_version = '0.36.10'
|
57
|
+
|
58
|
+
Dir.mktmpdir do |dir|
|
59
|
+
first_take = KPM::BaseArtifact.pull(@logger, group_id, artifact_id, packaging, classifier, version, dir)
|
60
|
+
File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar').should be_true
|
61
|
+
|
62
|
+
second_take = KPM::BaseArtifact.pull(@logger, group_id, artifact_id, packaging, classifier, second_bundle_version, dir)
|
63
|
+
File.file?(first_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.2.jar').should be_false
|
64
|
+
File.file?(second_take[:file_path] + '/killbill-platform-osgi-bundles-jruby-0.36.10.jar').should be_true
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
49
69
|
|
50
70
|
def test_download(dir, filename=nil, verify_is_skipped=false, force_download=false)
|
51
71
|
path = filename.nil? ? dir : dir + '/' + filename
|
@@ -52,6 +52,21 @@ describe KPM::BaseInstaller do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
it 'should extract plugin name from file path' do
|
56
|
+
|
57
|
+
[
|
58
|
+
{:file_path => '/Somewhere/xxx-foo/target/xxx-1.0.0.jar', :expected => 'xxx'},
|
59
|
+
{:file_path => '/Somewhere/xxx-foo/target/xxx-foo-bar-1.0.0.jar', :expected => 'xxx-foo-bar'},
|
60
|
+
{:file_path => '/Somewhere/xxx-foo/target/xxx-foo-1.0.0.jar', :expected => 'xxx-foo'},
|
61
|
+
{:file_path => '/Somewhere/xxx-foo/target/xxx-foo-1.0.0-SNAPSHOT.jar', :expected => 'xxx-foo'},
|
62
|
+
{:file_path => '/Somewhere/xxx-foo/target/xxx-foo-1.0.jar', :expected => 'xxx-foo'},
|
63
|
+
{:file_path => '/Somewhere/xxx-foo/target/xxx-foo-1.jar', :expected => 'xxx-foo'},
|
64
|
+
{:file_path => '/Somewhere/xxx-foo/target/xxx-foo-abc-SNAPSHOT.jar', :expected => 'xxx-foo'},
|
65
|
+
{:file_path => '/Somewhere/xxx-foo/target/xxx-foo-abc.jar', :expected => 'xxx-foo'}
|
66
|
+
].each do |test|
|
67
|
+
KPM::Utils.get_plugin_name_from_file_path(test[:file_path]).should eq test[:expected]
|
68
|
+
end
|
69
|
+
end
|
55
70
|
|
56
71
|
private
|
57
72
|
|
@@ -19,7 +19,11 @@ describe KPM::Installer do
|
|
19
19
|
@logger)
|
20
20
|
|
21
21
|
# No exception
|
22
|
-
|
22
|
+
response = nil
|
23
|
+
expect{ response = installer.install }.to_not raise_exception
|
24
|
+
response = JSON[response]
|
25
|
+
response['help'].should be_nil
|
26
|
+
response['killbill']['status'].should eq 'INSTALLED'
|
23
27
|
end
|
24
28
|
end
|
25
29
|
|
@@ -34,7 +38,11 @@ describe KPM::Installer do
|
|
34
38
|
@logger)
|
35
39
|
|
36
40
|
# No exception
|
37
|
-
|
41
|
+
response = nil
|
42
|
+
expect{ response = installer.install }.to_not raise_exception
|
43
|
+
response = JSON[response]
|
44
|
+
response['help'].should be_nil
|
45
|
+
response['kaui']['status'].should eq 'INSTALLED'
|
38
46
|
end
|
39
47
|
end
|
40
48
|
|
@@ -0,0 +1,60 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'rexml/document'
|
3
|
+
|
4
|
+
describe KPM::NexusFacade do
|
5
|
+
|
6
|
+
let(:coordinates_map){ {:version => '0.1.4',
|
7
|
+
:group_id => 'org.kill-bill.billing',
|
8
|
+
:artifact_id => 'killbill-platform-osgi-api',
|
9
|
+
:packaging => 'jar',
|
10
|
+
:classifier => nil} }
|
11
|
+
let(:coordinates_with_classifier_map){ {:version => '0.1.1',
|
12
|
+
:group_id => 'org.kill-bill.billing',
|
13
|
+
:artifact_id => 'killbill-platform-osgi-bundles-jruby',
|
14
|
+
:packaging => 'jar',
|
15
|
+
:classifier => 'javadoc'} }
|
16
|
+
let(:coordinates) { KPM::Coordinates.build_coordinates(coordinates_map)}
|
17
|
+
let(:coordinates_with_classifier) { KPM::Coordinates.build_coordinates(coordinates_with_classifier_map)}
|
18
|
+
let(:nexus_remote) { described_class::RemoteFactory.create(nil, true)}
|
19
|
+
|
20
|
+
it 'when searching for artifacts' do
|
21
|
+
response = nil
|
22
|
+
expect{ response = nexus_remote.search_for_artifacts(coordinates) }.not_to raise_exception
|
23
|
+
expect(REXML::Document.new(response).elements["//artifactId"].text).to eq(coordinates_map[:artifact_id])
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'when searching for artifact with classifier' do
|
27
|
+
response = nil
|
28
|
+
expect{ response = nexus_remote.search_for_artifacts(coordinates_with_classifier) }.not_to raise_exception
|
29
|
+
expect(REXML::Document.new(response).elements["//artifactId"].text).to eq(coordinates_with_classifier_map[:artifact_id])
|
30
|
+
end
|
31
|
+
|
32
|
+
it 'when getting artifact info' do
|
33
|
+
response = nil
|
34
|
+
expect{ response = nexus_remote.get_artifact_info(coordinates) }.not_to raise_exception
|
35
|
+
expect(REXML::Document.new(response).elements["//version"].text).to eq(coordinates_map[:version])
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'when getting artifact info with classifier' do
|
39
|
+
response = nil
|
40
|
+
expect{ response = nexus_remote.get_artifact_info(coordinates_with_classifier) }.not_to raise_exception
|
41
|
+
expect(REXML::Document.new(response).elements["//version"].text).to eq(coordinates_with_classifier_map[:version])
|
42
|
+
end
|
43
|
+
|
44
|
+
it 'when pull artifact' do
|
45
|
+
response = nil
|
46
|
+
destination = Dir.mktmpdir('artifact')
|
47
|
+
expect{ response = nexus_remote.pull_artifact(coordinates,destination) }.not_to raise_exception
|
48
|
+
destination = File.join(File.expand_path(destination), response[:file_name])
|
49
|
+
expect(File.exist?(destination)).to be_true
|
50
|
+
end
|
51
|
+
|
52
|
+
it 'when pull artifact with classifier' do
|
53
|
+
response = nil
|
54
|
+
destination = Dir.mktmpdir('artifact')
|
55
|
+
expect{ response = nexus_remote.pull_artifact(coordinates_with_classifier,destination) }.not_to raise_exception
|
56
|
+
destination = File.join(File.expand_path(destination), response[:file_name])
|
57
|
+
expect(File.exist?(destination)).to be_true
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kpm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kill Bill core team
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: highline
|
@@ -24,20 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.6.21
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: nexus_cli
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 4.1.0
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 4.1.0
|
41
27
|
- !ruby/object:Gem::Dependency
|
42
28
|
name: thor
|
43
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +122,7 @@ files:
|
|
136
122
|
- lib/kpm/cli.rb
|
137
123
|
- lib/kpm/coordinates.rb
|
138
124
|
- lib/kpm/database.rb
|
125
|
+
- lib/kpm/diagnostic_file.rb
|
139
126
|
- lib/kpm/formatter.rb
|
140
127
|
- lib/kpm/inspector.rb
|
141
128
|
- lib/kpm/installer.rb
|
@@ -143,14 +130,24 @@ files:
|
|
143
130
|
- lib/kpm/killbill_plugin_artifact.rb
|
144
131
|
- lib/kpm/killbill_server_artifact.rb
|
145
132
|
- lib/kpm/migrations.rb
|
133
|
+
- lib/kpm/nexus_helper/actions.rb
|
134
|
+
- lib/kpm/nexus_helper/nexus_api_calls_v2.rb
|
135
|
+
- lib/kpm/nexus_helper/nexus_facade.rb
|
146
136
|
- lib/kpm/plugins_directory.rb
|
147
137
|
- lib/kpm/plugins_directory.yml
|
148
138
|
- lib/kpm/plugins_manager.rb
|
149
139
|
- lib/kpm/sha1_checker.rb
|
150
140
|
- lib/kpm/system.rb
|
141
|
+
- lib/kpm/system_helpers/cpu_information.rb
|
142
|
+
- lib/kpm/system_helpers/disk_space_information.rb
|
143
|
+
- lib/kpm/system_helpers/entropy_available.rb
|
144
|
+
- lib/kpm/system_helpers/memory_information.rb
|
145
|
+
- lib/kpm/system_helpers/os_information.rb
|
146
|
+
- lib/kpm/system_helpers/system_proxy.rb
|
151
147
|
- lib/kpm/tasks.rb
|
152
148
|
- lib/kpm/tenant_config.rb
|
153
149
|
- lib/kpm/tomcat_manager.rb
|
150
|
+
- lib/kpm/trace_logger.rb
|
154
151
|
- lib/kpm/uninstaller.rb
|
155
152
|
- lib/kpm/utils.rb
|
156
153
|
- lib/kpm/version.rb
|
@@ -166,6 +163,7 @@ files:
|
|
166
163
|
- spec/kpm/remote/killbill_plugin_artifact_spec.rb
|
167
164
|
- spec/kpm/remote/killbill_server_artifact_spec.rb
|
168
165
|
- spec/kpm/remote/migrations_spec.rb
|
166
|
+
- spec/kpm/remote/nexus_facade_spec.rb
|
169
167
|
- spec/kpm/remote/tenant_config_spec.rb
|
170
168
|
- spec/kpm/remote/tenant_config_spec.yml
|
171
169
|
- spec/kpm/remote/tomcat_manager_spec.rb
|