Module: Three::Par

Defined in:
lib/three/par.rb,
lib/three/par/version.rb

Constant Summary collapse

VERSION =
"0.1.0"

Instance Method Summary collapse

Instance Method Details

#create_cpg(node, session_key, payload) ⇒ Object



87
88
89
# File 'lib/three/par.rb', line 87

def create_cpg(node, session_key, payload)
  rest_call(:post, node, "/api/v1/cpgs", session_key, payload.to_json)
end

#create_host(node, session_key, payload) ⇒ Object



91
92
93
# File 'lib/three/par.rb', line 91

def create_host(node,session_key,payload)
  rest_call(:post, node, "/api/v1/hosts", session_key, payload.to_json)
end

#create_vlun(node, session_key, payload) ⇒ Object



120
121
122
# File 'lib/three/par.rb', line 120

def create_vlun(node, session_key, payload)
  rest_call(:post, node, "/api/v1/vluns", session_key, payload.to_json)
end

#create_volume(node, session_key, payload) ⇒ Object



99
100
101
# File 'lib/three/par.rb', line 99

def create_volume(node, session_key, payload)
  rest_call(:post, node, "/api/v1/volumes/", session_key, payload.to_json)
end

#delete_cpg(node, cpg_name, session_key) ⇒ Object



74
75
76
# File 'lib/three/par.rb', line 74

def delete_cpg(node, cpg_name, session_key)
  rest_call(:delete, node, "/api/v1/cpgs/#{cpg_name}", session_key)
end

#delete_host(node, host_name, session_key) ⇒ Object



78
79
80
# File 'lib/three/par.rb', line 78

def delete_host(node, host_name, session_key)
  rest_call(:delete, node, "/api/v1/hosts/#{host_name}", session_key)
end

#delete_session_key(node, session_key) ⇒ Object



35
36
37
# File 'lib/three/par.rb', line 35

def delete_session_key(node, session_key)
  RestClient.delete("http://#{node['ip']}:8008/api/v1/credentials/#{session_key}",{:content_type => 'application/json',:accept => 'application/json'})
end

#delete_volume(node, volume, session_key) ⇒ Object



116
117
118
# File 'lib/three/par.rb', line 116

def delete_volume(node, volume, session_key)
  rest_call(:delete, node, "/api/v1/volumes/#{volume}", session_key)
end

#display_capacity(node, capacity_file, session_key) ⇒ Object



59
60
61
62
# File 'lib/three/par.rb', line 59

def display_capacity(node, capacity_file, session_key)
  response = rest_call(:get, node, '/api/v1/capacity', session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{capacity_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#display_cpgs(node, cpg_file, session_key) ⇒ Object



39
40
41
42
# File 'lib/three/par.rb', line 39

def display_cpgs(node,cpg_file, session_key)
  response = rest_call(:get, node, '/api/v1/cpgs', session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{cpg_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#display_hosts(node, host_file, session_key) ⇒ Object



44
45
46
47
# File 'lib/three/par.rb', line 44

def display_hosts(node, host_file, session_key)
  response = rest_call(:get, node, '/api/v1/hosts', session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{host_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#display_roles(node, roles_file, session_key) ⇒ Object



69
70
71
72
# File 'lib/three/par.rb', line 69

def display_roles(node, roles_file, session_key)
  response = rest_call(:get, node, '/api/v1/roles', session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{roles_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#display_users(node, users_file, session_key) ⇒ Object



64
65
66
67
# File 'lib/three/par.rb', line 64

def display_users(node, users_file, session_key)
  response = rest_call(:get, node, '/api/v1/users', session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{users_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#display_vluns(node, host_file, session_key) ⇒ Object



49
50
51
52
# File 'lib/three/par.rb', line 49

def display_vluns(node, host_file, session_key)
  response = rest_call(:get, node, '/api/v1/vluns', session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{host_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#display_volumes(node, volume_file, session_key) ⇒ Object



54
55
56
57
# File 'lib/three/par.rb', line 54

def display_volumes(node, volume_file, session_key)
  response = rest_call(:get, node, '/api/v1/volumes', session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{volume_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#grow_volume(node, volume, size, session_key) ⇒ Object



108
109
110
111
112
113
114
# File 'lib/three/par.rb', line 108

def grow_volume(node, volume, size, session_key)
  payload = {
    "action" => 3,
    "sizeMiB" => size
  }
  rest_call(:put, node, "/api/v1/volumes/#{volume}", session_key, payload.to_json)
end

#modify_cpg(node, cpg_name, new_cpg_name, session_key, payload) ⇒ Object



95
96
97
# File 'lib/three/par.rb', line 95

def modify_cpg(node, cpg_name, new_cpg_name, session_key, payload)
  rest_call(:put, node, "/api/v1/cpgs/#{cpg_name}", session_key, payload.to_json)
end

#remove_vlun(node, volume_name, lun, host_name, session_key) ⇒ Object



134
135
136
137
138
# File 'lib/three/par.rb', line 134

def remove_vlun(node, volume_name, lun, host_name, session_key)
  payload =  volume_name + "," + lun.to_s + "," + host_name
  path = URI.escape("/api/v1/vluns/" + payload)
  rest_call(:delete, node, path , session_key)
end

#rest_call(type, node, path, session_key, payload = nil) ⇒ Object



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/three/par.rb', line 14

def rest_call(type, node, path, session_key, payload=nil)
  url = URI.escape("http://#{node['ip']}:8008" + path)
  headers = {
    :content_type => 'application/json',
    :accept => 'application/json',
    'X-HP3PAR-WSAPI-SessionKey' => "#{session_key}",}
    begin
      response = RestClient::Request.execute(:method => type, :url => url, :payload => payload, :headers => headers)
    rescue RestClient::Forbidden => error
      binding.pry
      raise JSON.parse(error.response)["desc"]
    rescue RestClient::BadRequest => error
      binding.pry
      raise JSON.parse(error.response)["desc"]
    rescue RestClient::Conflict => error
      binding.pry
      raise JSON.parse(error.response)["desc"]
    end
    JSON.parse(response) rescue ''
end

#retrieve_3par_session_key(node) ⇒ Object

Your code goes here…



7
8
9
10
11
12
# File 'lib/three/par.rb', line 7

def retrieve_3par_session_key(node)
  options = {:content_type => 'application/json',:accept => 'application/json'}
  credentials = {:user => node["username"], :password => node["password"]}.to_json
  post = RestClient.post("http://#{node['ip']}:8008/api/v1/credentials", credentials, options)
  JSON.parse(post)["key"]
end

#show_cpg(node, cpg_name, cpg_file, session_key) ⇒ Object



82
83
84
85
# File 'lib/three/par.rb', line 82

def show_cpg(node, cpg_name, cpg_file, session_key)
  response = rest_call(:get, node, "/api/v1/cpgs/#{cpg_name}", session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{cpg_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#show_role(node, role_name, role_file, session_key) ⇒ Object



129
130
131
132
# File 'lib/three/par.rb', line 129

def show_role(node, role_name, role_file, session_key)
  response = rest_call(:get, node, "/api/v1/roles/#{role_name}", session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{role_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#show_user(node, user_name, user_file, session_key) ⇒ Object



124
125
126
127
# File 'lib/three/par.rb', line 124

def show_user(node, user_name, user_file, session_key)
  response = rest_call(:get, node, "/api/v1/users/#{user_name}", session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{user_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end

#show_volume(node, volume_name, volume_file, session_key) ⇒ Object



103
104
105
106
# File 'lib/three/par.rb', line 103

def show_volume(node, volume_name, volume_file, session_key)
  response = rest_call(:get, node, "/api/v1/volumes/#{volume_name}", session_key)
  File.open("#{Chef::Config[:file_cache_path]}/#{volume_file}.txt", 'a+') { |file| file.write(response.to_yaml) }
end