vagrant-save 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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