stoarray 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +7 -0
  2. data/lib/arraycalls.rb +100 -0
  3. data/lib/stoarray.rb +7 -0
  4. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: e616c083bad446dea88b8f3d71991e75a9432c2b
4
+ data.tar.gz: 03bf4f4add6a12a951644e83452d923fee3553ff
5
+ SHA512:
6
+ metadata.gz: 21c60fade6d3203cc142d0b6b55fccbf9acd0cf9949e203771aec4bbdfe901a5a089106581204fb8f15db9c6dd7c867833ab5a7f763f81652f1efcee1bf6400e
7
+ data.tar.gz: fae4807504694e38208efda4e0993f3986933944d05e6a9a4400252c5e356bf3ce9f97791cc3a1943fb7e339492685b8ce1aed9890e0d2caf6538b199706ed5f
data/lib/arraycalls.rb ADDED
@@ -0,0 +1,100 @@
1
+ class Stoarray
2
+
3
+ VERBS = {
4
+ 'get' => Net::HTTP::Get,
5
+ 'post' => Net::HTTP::Post,
6
+ 'put' => Net::HTTP::Put,
7
+ 'delete' => Net::HTTP::Delete
8
+ }
9
+
10
+ def initialize(headers: {}, meth: 'Get', params: {}, url: 'https://array/')
11
+ @url = URI.parse(url) # URL of the call
12
+ @headers = headers
13
+ @call = VERBS[meth.downcase].new(@url.path, initheader = @headers)
14
+ @call.body = params.to_json # Pure and Xtremio expect json parameters
15
+ @request = Net::HTTP.new(@url.host, @url.port)
16
+ @request.read_timeout = 30
17
+ @request.use_ssl = true if @url.to_s =~ /https/
18
+ @request.verify_mode = OpenSSL::SSL::VERIFY_NONE # parameterize?
19
+ end
20
+
21
+ def cookie
22
+ @response = @request.start { |http| http.request(@call) }
23
+ all_cookies = @response.get_fields('set-cookie')
24
+ cookies_array = Array.new
25
+ all_cookies.each { | cookie |
26
+ cookies_array.push(cookie.split('; ')[0])
27
+ }
28
+ cookies = cookies_array.join('; ')
29
+ end
30
+
31
+ def error_text(method_name, url, wanted)
32
+ response = {
33
+ "response" =>
34
+ "ERROR: Wrong url for the #{method_name} method.\n"\
35
+ "Sent: #{url}\n"\
36
+ "Expected: \"#{wanted}\" as part of the url.",
37
+ "status" => "DORKED!"
38
+ }
39
+ end
40
+
41
+ def flippy(temp_hash)
42
+ flippy = temp_hash['to-snapshot-set-id'] + '_347'
43
+ url = 'https://sa0319xms01/api/json/v2/types/snapshot-sets'
44
+ x = Stoarray.new(headers: @headers, meth: 'Get', params: {}, url: url).snap
45
+ if x['response']['snapshot-sets'].any? { |y| y['name'].include?(flippy) }
46
+ temp_hash['snapshot-set-name'] = temp_hash['to-snapshot-set-id']
47
+ temp_hash['to-snapshot-set-id'] = flippy
48
+ else
49
+ temp_hash['snapshot-set-name'] = flippy
50
+ end
51
+ temp_hash['no-backup'] = true
52
+ temp_hash
53
+ end
54
+
55
+ def host
56
+ if @url.to_s =~ /host/
57
+ response = @request.start { |http| http.request(@call) }
58
+ responder(response)
59
+ else
60
+ error_text("host", @url.to_s, "host")
61
+ end
62
+ end
63
+
64
+ def refresh
65
+ case @url.to_s
66
+ when /snapshot/ # Xtremio
67
+ @call.body = flippy(JSON.parse(@call.body)).to_json
68
+ when /volume/ # Pure, handle the interim snap automagically
69
+ # obviously not implemented yet :)
70
+ end
71
+ refreshy = @request.start { |http| http.request(@call) }
72
+ responder(refreshy)
73
+ end
74
+
75
+ def responder(response) # combine into one method? with error_text
76
+ response = {
77
+ "response" => JSON.parse(response.body),
78
+ "status" => response.code
79
+ }
80
+ end
81
+
82
+ def snap
83
+ if @url.to_s =~ /snapshot/
84
+ response = @request.start { |http| http.request(@call) }
85
+ responder(response)
86
+ else
87
+ error_text("snap", @url.to_s, "snapshot")
88
+ end
89
+ end
90
+
91
+ def volume
92
+ if @url.to_s =~ /volume/
93
+ response = @request.start { |http| http.request(@call) }
94
+ responder(response)
95
+ else
96
+ error_text("volume", @url.to_s, "volume")
97
+ end
98
+ end
99
+
100
+ end
data/lib/stoarray.rb ADDED
@@ -0,0 +1,7 @@
1
+ require 'base64'
2
+ require 'cgi'
3
+ require 'json'
4
+ require 'net/http'
5
+ require 'net/https'
6
+ require 'uri'
7
+ require 'arraycalls'
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: stoarray
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kody Wilson
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-11-17 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: Interact with storage array api using Ruby
14
+ email: kodywilson@gmail.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/arraycalls.rb
20
+ - lib/stoarray.rb
21
+ homepage: https://github.com/kodywilson/stoarray
22
+ licenses:
23
+ - MIT
24
+ metadata: {}
25
+ post_install_message:
26
+ rdoc_options: []
27
+ require_paths:
28
+ - lib
29
+ required_ruby_version: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ required_rubygems_version: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: '0'
39
+ requirements: []
40
+ rubyforge_project:
41
+ rubygems_version: 2.4.8
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: Storage array Ruby sdk
45
+ test_files: []