vagrant-save 0.3.1 → 0.3.2

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb13818ccbe5e7ade3859be370d60880fb5e2a83
4
- data.tar.gz: 1ef13aa7f48ade51586ecc325045758f3d1ed2ce
3
+ metadata.gz: 5540fc991600353117fac991a4377e267d9b772c
4
+ data.tar.gz: 9f2c4d86870c8169864e111ec81d3bc9c4a17659
5
5
  SHA512:
6
- metadata.gz: ca619292dbd0b54460f7c78ccb672b5ed2d7faf352074d671cb1dac9a0dec8eb3f01a5af87ce6d3b56047e081ef9637f04f916c3c0bc82bafc05f71d535c890b
7
- data.tar.gz: 1837c22bf7856b89bdb6c14338d7b32e55c9825360160e746e458ff285cdbc2158d05fed993af62f1f5c1c24937f01247cb594ef08e17d399ef8204f0fddb10f
6
+ metadata.gz: 0d862bea58a04973a5a32d0ddf2d0d287c40f503f7cdfb876029ba3834dee2d42eeb7064e11e5615d6f4d77d69a6cd6d010cee9281d2c310b0418861e54d7a3c
7
+ data.tar.gz: 2109dbe663cb5d30bae8e4f1cef47e7f326dd1adc5959ddd989b9c82d675a9e31d4bb699bdb03eda865952b970d6226231e3f233b9325d16d642c0528fd7b170
@@ -86,6 +86,8 @@ module VagrantPlugins
86
86
  @env.machine_index.set(data)
87
87
  @env.machine_index.release(data)
88
88
 
89
+ machine.ui.info("Adding new version to local store")
90
+
89
91
  @env.boxes.add(
90
92
  file,
91
93
  machine.box.name,
@@ -55,26 +55,34 @@ module VagrantPlugins
55
55
 
56
56
  File.open(file) do |f|
57
57
 
58
- uri = URI.parse(post_url)
58
+ uri = URI.parse(post_url)
59
59
  full_size = f.size
60
+ full = format_bytes(full_size.to_f)
60
61
 
61
62
  http = Net::HTTP.new(uri.host, uri.port)
63
+
62
64
  http.open_timeout = 10000
63
65
  http.read_timeout = 10000
64
66
 
65
67
  req = Net::HTTP::Post.new(uri.path)
66
68
  req.set_form({"box" => f}, 'multipart/form-data')
67
69
 
68
- previous_percent = ""
70
+ previous_info = ""
69
71
 
70
72
  Net::HTTP::UploadProgress.new(req) do |progress|
71
- frac = progress.upload_size.to_f / full_size.to_f
72
- percent = (frac * 100).round.to_s + "%"
73
+ if progress.upload_size.to_f >= full_size.to_f
74
+ info = "Upload complete, commiting new box"
75
+ else
76
+ frac = progress.upload_size.to_f / full_size.to_f
77
+ percent = (frac * 100).round.to_s + "%"
78
+ part = format_bytes(progress.upload_size.to_f)
79
+ info = "#{percent} (#{part} / #{full})"
80
+ end
73
81
 
74
- if percent != previous_percent
75
- previous_percent = percent
82
+ if info != previous_info
83
+ previous_info = info
76
84
  @env.ui.clear_line
77
- @env.ui.report_progress(progress.upload_size.to_f, full_size.to_f)
85
+ @env.ui.info(info, new_line: false)
78
86
  end
79
87
  end
80
88
  res = http.request(req)
@@ -89,12 +97,22 @@ module VagrantPlugins
89
97
  provider
90
98
  end
91
99
 
100
+ def format_bytes(num)
101
+ units = ["Byte", "KB", "MB", "GB", "TB"]
102
+ index = (Math.log(num) / Math.log(2)).to_i / 10
103
+ bytes = num / ( 1024 ** index )
104
+ bytes = bytes.round(2).to_s.gsub(/\.0+$/, "")
105
+
106
+ "#{bytes} #{units[index]}"
107
+ end
108
+
92
109
  # @param [Vagrant::Machine] machine
93
110
  # @param [int] keep
94
111
  # @return int
95
112
  def clean(machine, keep)
96
113
 
97
114
  client = HTTPClient.new
115
+
98
116
  client.connect_timeout = 10000
99
117
  client.send_timeout = 10000
100
118
  client.receive_timeout = 10000
@@ -104,18 +122,27 @@ module VagrantPlugins
104
122
  @logger.debug("Load versions from #{data_url}")
105
123
 
106
124
  res = client.get(data_url)
107
- data = JSON.parse(res.http_body)
108
- saved_versions = data['versions'].map{ |v| v.version}
109
125
 
110
- @logger.debug("Received #{saved_versions.length} versions")
126
+ @logger.debug("Got response #{res.inspect}")
127
+
128
+ data = JSON.parse(res.body)
129
+
130
+ @logger.debug("Traverse versions in #{data.inspect}")
131
+
132
+ saved_versions = data['versions'].map{ |v|
133
+ @logger.debug("Received version #{v.inspect}")
134
+ v['version']
135
+ }
136
+
137
+ @logger.debug("Got #{saved_versions.length} versions: #{saved_versions.inspect}")
111
138
 
112
139
  if saved_versions.length > keep
113
140
  machine.ui.info('Cleaning up old versions')
114
141
 
115
- saved_versions = saved_versions.sort.reverse
116
- saved_versions.slice(keep, saved_versions.length).each { |v|
142
+ saved_versions.sort.reverse.slice(keep, saved_versions.length).each { |v|
117
143
  delete_url = data_url + '/' + v
118
144
 
145
+ machine.ui.info("Deleting version #{v}")
119
146
  @logger.debug("Sending delete #{delete_url}")
120
147
 
121
148
  client.delete(delete_url)
@@ -5,6 +5,6 @@
5
5
 
6
6
  module VagrantPlugins
7
7
  module Save
8
- VERSION = '0.3.1'
8
+ VERSION = '0.3.2'
9
9
  end
10
10
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-save
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Georg Grossberger
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-13 00:00:00.000000000 Z
11
+ date: 2016-07-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: vagrant-export