mrm 1.1.1 → 1.2.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/bin/mrm +15 -3
- data/lib/mrm/api.rb +38 -5
- data/lib/mrm/client.rb +9 -1
- data/lib/mrm/version.rb +2 -2
- data/lib/mrm.rb +1 -0
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: dae886f51c635387efae02e7df8cdc3f08f4d3f4
|
|
4
|
+
data.tar.gz: 072c996d014c6d956ba27623cd10411fe18fcfa8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 4de7e5aef08e6f1359f11cbc0d2ab6e2077add60a58bdfb915e836242bf8a8d39d5e6ee6369ac25b44e091fc774bd6ab22f49fa82a0add4fe4a24846528d4e1b
|
|
7
|
+
data.tar.gz: a1f80f29d3124b87cadaff34ca82ff7b961a25458251b483cdefa7214eed4c32d9fefa3d3975c60c9ea634723a109367351e5ef956011da0b65a01d247dc616d
|
data/bin/mrm
CHANGED
|
@@ -17,9 +17,15 @@ OptionParser.new do |opts|
|
|
|
17
17
|
opts.on('-h', '--help', 'Display this help') do
|
|
18
18
|
puts opts.to_s.split("\n")
|
|
19
19
|
puts "\nCommands:"
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
20
|
+
[
|
|
21
|
+
['check', '', '', "Checks registry availability\n"],
|
|
22
|
+
['list', '', '', "Lists repositories of the registry\n"],
|
|
23
|
+
['list', '*repo*', '', "Lists tags of the specific repository\n"],
|
|
24
|
+
['get', '*repo*', '*reference*', "Pulls a manifest for the image\n"],
|
|
25
|
+
['delete', '*repo*', '*reference*', "Deletes an image from the specific repository\n"]
|
|
26
|
+
].each do |args|
|
|
27
|
+
printf(" %-7s %-7s %-16s %-20s", *args)
|
|
28
|
+
end
|
|
23
29
|
abort
|
|
24
30
|
end
|
|
25
31
|
end.parse!
|
|
@@ -32,6 +38,12 @@ end
|
|
|
32
38
|
case ARGV[0]
|
|
33
39
|
when 'check'
|
|
34
40
|
client.version_check
|
|
41
|
+
when 'delete'
|
|
42
|
+
puts 'Wrong number of arguments' if ARGV[1].nil? || ARGV[2].nil?
|
|
43
|
+
client.delete_image(ARGV[1], ARGV[2])
|
|
44
|
+
when 'get'
|
|
45
|
+
puts 'Wrong number of arguments' if ARGV[1].nil? || ARGV[2].nil?
|
|
46
|
+
client.get_manifest(ARGV[1], ARGV[2])
|
|
35
47
|
when 'list'
|
|
36
48
|
if ARGV[1].nil?
|
|
37
49
|
client.list_repositories
|
data/lib/mrm/api.rb
CHANGED
|
@@ -5,16 +5,28 @@ module MRM
|
|
|
5
5
|
end
|
|
6
6
|
|
|
7
7
|
def version_check
|
|
8
|
-
response =
|
|
8
|
+
response = get_request("#{url}/v2/")
|
|
9
9
|
if response.code == '200'
|
|
10
|
-
|
|
10
|
+
'--> Repository is reachable and accessible.'
|
|
11
|
+
else
|
|
12
|
+
raise ResponseError, response.body
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def get_manifest(name, reference)
|
|
17
|
+
response = get_request(
|
|
18
|
+
"#{url}/v2/#{name}/manifests/#{reference}",
|
|
19
|
+
{ 'Accept' => 'application/vnd.docker.distribution.manifest.v2+json' }
|
|
20
|
+
)
|
|
21
|
+
if response.code == '200'
|
|
22
|
+
JSON.parse(response.body)
|
|
11
23
|
else
|
|
12
24
|
raise ResponseError, response.body
|
|
13
25
|
end
|
|
14
26
|
end
|
|
15
27
|
|
|
16
28
|
def list_repositories
|
|
17
|
-
response =
|
|
29
|
+
response = get_request("#{url}/v2/_catalog")
|
|
18
30
|
if response.code == '200'
|
|
19
31
|
JSON.parse(response.body)
|
|
20
32
|
else
|
|
@@ -23,7 +35,7 @@ module MRM
|
|
|
23
35
|
end
|
|
24
36
|
|
|
25
37
|
def list_tags(name)
|
|
26
|
-
response =
|
|
38
|
+
response = get_request("#{url}/v2/#{name}/tags/list")
|
|
27
39
|
if response.code == '200'
|
|
28
40
|
JSON.parse(response.body)
|
|
29
41
|
else
|
|
@@ -31,14 +43,35 @@ module MRM
|
|
|
31
43
|
end
|
|
32
44
|
end
|
|
33
45
|
|
|
46
|
+
def delete_image(name, reference)
|
|
47
|
+
response = delete_request("#{url}/v2/#{name}/manifests/#{reference}")
|
|
48
|
+
if response.code == '202'
|
|
49
|
+
JSON.parse(response.body)
|
|
50
|
+
else
|
|
51
|
+
raise ResponseError, response.body
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
34
55
|
private
|
|
35
56
|
attr_reader :url, :login, :pass
|
|
36
57
|
|
|
37
|
-
def
|
|
58
|
+
def get_request(url, headers = {})
|
|
38
59
|
uri = URI(url)
|
|
39
60
|
http = Net::HTTP.new(uri.host, uri.port)
|
|
40
61
|
http.use_ssl = uri.scheme == 'https'
|
|
41
62
|
request = Net::HTTP::Get.new(uri.request_uri)
|
|
63
|
+
headers.each do |key, value|
|
|
64
|
+
request[key] = value
|
|
65
|
+
end
|
|
66
|
+
request.basic_auth(login, pass)
|
|
67
|
+
http.request(request)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def delete_request(url)
|
|
71
|
+
uri = URI(url)
|
|
72
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
|
73
|
+
http.use_ssl = uri.scheme == 'https'
|
|
74
|
+
request = Net::HTTP::Delete.new(uri.request_uri)
|
|
42
75
|
request.basic_auth(login, pass)
|
|
43
76
|
http.request(request)
|
|
44
77
|
end
|
data/lib/mrm/client.rb
CHANGED
|
@@ -5,7 +5,11 @@ module MRM
|
|
|
5
5
|
end
|
|
6
6
|
|
|
7
7
|
def version_check
|
|
8
|
-
puts api.version_check
|
|
8
|
+
puts api.version_check.brown
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def get_manifest(name, reference)
|
|
12
|
+
pp api.get_manifest(name, reference)
|
|
9
13
|
end
|
|
10
14
|
|
|
11
15
|
def list_repositories
|
|
@@ -20,6 +24,10 @@ module MRM
|
|
|
20
24
|
end
|
|
21
25
|
end
|
|
22
26
|
|
|
27
|
+
def delete_image(name, reference)
|
|
28
|
+
puts api.delete_image(name, reference)
|
|
29
|
+
end
|
|
30
|
+
|
|
23
31
|
private
|
|
24
32
|
attr_reader :config
|
|
25
33
|
|
data/lib/mrm/version.rb
CHANGED
data/lib/mrm.rb
CHANGED