Class: BrocadeAPIClient::Zones

Inherits:
Object
  • Object
show all
Defined in:
lib/BrocadeAPIClient/zones.rb

Overview

Zones REST API Methods

Instance Method Summary collapse

Constructor Details

#initialize(http_client) ⇒ Zones

Returns a new instance of Zones.



15
16
17
18
# File 'lib/BrocadeAPIClient/zones.rb', line 15

def initialize(http_client)
  @http_client = http_client
  @base_url = '/resourcegroups/All/fcfabrics/'
end

Instance Method Details

#alicreate(fabrickey, aliname, *wwn) ⇒ Object



63
64
65
66
67
68
69
70
# File 'lib/BrocadeAPIClient/zones.rb', line 63

def alicreate(fabrickey, aliname, *wwn)
  wwn.map!(&:upcase)
  api_url = @base_url + fabrickey.upcase + '/createzoningobject'
  alihash ||= { name: aliname, memberNames: wwn }
  (aliarray ||= []) << alihash
  payload ||= { zoneAliases: aliarray }
  _response, _body = @http_client.post(api_url, body: payload)
end

#alidelete(fabrickey, *alinames) ⇒ Object



105
106
107
108
109
# File 'lib/BrocadeAPIClient/zones.rb', line 105

def alidelete(fabrickey, *alinames)
  api_url = @base_url + fabrickey.upcase + '/deletezoningobject'
  payload ||= { zoneAliasNames: alinames }
  _response, _body = @http_client.post(api_url, body: payload)
end

#alishow(fabrickey, zakey = 'none') ⇒ Object



45
46
47
48
49
# File 'lib/BrocadeAPIClient/zones.rb', line 45

def alishow(fabrickey, zakey = 'none')
  api_url = @base_url + fabrickey.upcase + '/zonealiases'
  api_url += '/' + zakey unless zakey == 'none'
  _response, _body = @http_client.get(api_url)
end

#alteralias(fabrickey, action, aliname, *wwn) ⇒ Object



120
121
122
123
124
125
126
127
128
# File 'lib/BrocadeAPIClient/zones.rb', line 120

def alteralias(fabrickey, action, aliname, *wwn)
  api_url = @base_url + fabrickey.upcase + '/updatezoningobject'
  payload ||= { action: validate_answer(action) }
  wwn.map!(&:upcase)
  alihash ||= { name: aliname, memberNames: wwn }
  (aliarray ||= []) << alihash
  payload.store(:zoneAliases, aliarray)
  _response, _body = @http_client.post(api_url, body: payload)
end

#altercfg(fabrickey, action, cfgname, *zonenames) ⇒ Object



111
112
113
114
115
116
117
118
# File 'lib/BrocadeAPIClient/zones.rb', line 111

def altercfg(fabrickey, action, cfgname, *zonenames)
  api_url = @base_url + fabrickey.upcase + '/updatezoningobject'
  payload ||= { action: validate_answer(action) }
  cfghash ||= { name: cfgname, zoneNames: zonenames }
  (cfgarray ||= []) << cfghash
  payload.store(:zoneSets, cfgarray)
  _response, _body = @http_client.post(api_url, body: payload)
end

#alterzoning_peerzone(fabrickey, action, zonename, **wwn) ⇒ Object



139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
# File 'lib/BrocadeAPIClient/zones.rb', line 139

def alterzoning_peerzone(fabrickey, action, zonename, **wwn)
  api_url = @base_url + fabrickey.upcase + '/updatezoningobject'
  peerdetails = {}
  peermembers = {}
  payload ||= { action: validate_answer(action) }
  case (wwn.keys & %i[principal members]).sort
  when %i[members principal]
    wwn[:members].map!(&:upcase)
    wwn[:principal].map!(&:upcase)
    peermembers = { peerMemberName: wwn[:members] }
    peerdetails = { principalMemberName: wwn[:principal] }
  when [:principal]
    wwn[:principal].map!(&:upcase)
    peerdetails = { principalMemberName: wwn[:principal] }
  when [:members]
    wwn[:members].map!(&:upcase)
    peermembers = { peerMemberName: wwn[:members] }
  else
    raise BrocadeAPIClient::InvalidPeerzoneOptions
  end
  peerdetails.store(:peerMembers, peermembers)
  zonedetails ||= { name: zonename, type: 'STANDARD', peerZone: 'True', peerZoneDetails: peerdetails }
  (zonearray ||= []) << zonedetails
  payload.store(:zones, zonearray)
  _response, _body = @http_client.post(api_url, body: payload)
end

#alterzoning_standard(fabrickey, action, zonename, *aliases) ⇒ Object



130
131
132
133
134
135
136
137
# File 'lib/BrocadeAPIClient/zones.rb', line 130

def alterzoning_standard(fabrickey, action, zonename, *aliases)
  api_url = @base_url + fabrickey.upcase + '/updatezoningobject'
  payload ||= { action: validate_answer(action) }
  zonehash ||= { name: zonename, aliasNames: aliases }
  (zonearray ||= []) << zonehash
  payload.store(:zones, zonearray)
  _response, _body = @http_client.post(api_url, body: payload)
end

#cfgenable(fabrickey, cfgname) ⇒ Object



166
167
168
169
170
# File 'lib/BrocadeAPIClient/zones.rb', line 166

def cfgenable(fabrickey, cfgname)
  api_url = @base_url + fabrickey.upcase + '/zonesets/' + cfgname + '-false/activate'
  payload = {}
  _response, _body = @http_client.post(api_url, body: payload)
end

#cfgshow(fabrickey, type) ⇒ Object



51
52
53
54
55
56
57
58
59
60
61
# File 'lib/BrocadeAPIClient/zones.rb', line 51

def cfgshow(fabrickey, type)
  api_url =  @base_url + fabrickey.upcase + '/zonesets'
  if type == 'all'
  elsif type == 'active'
    api_url += '?active=true'
  elsif type == 'defined'
    api_url +=  '?active=false'
  else raise BrocadeAPIClient::UnsupportedOption
  end
  _response, _body = @http_client.get(api_url)
end

#control_transaction(fabrickey, action) ⇒ Object



72
73
74
75
76
# File 'lib/BrocadeAPIClient/zones.rb', line 72

def control_transaction(fabrickey, action)
  payload ||= { lsanZoning: 'false', action: action.upcase }
  api_url = @base_url + fabrickey.upcase + '/controlzonetransaction'
  _response, _body = @http_client.post(api_url, body: payload)
end

#zonecreate_peerzone(fabrickey, zonename, **members) ⇒ Object

Raises:

  • (BrocadeAPIClient::InvalidPeerzoneOptions)


87
88
89
90
91
92
93
94
95
96
97
# File 'lib/BrocadeAPIClient/zones.rb', line 87

def zonecreate_peerzone(fabrickey, zonename, **members)
  raise BrocadeAPIClient::InvalidPeerzoneOptions unless members.key?(:principal) && members.key?(:members)

  api_url = @base_url + fabrickey.upcase + '/createzoningobject'
  peermembers ||= { peerMemberName: members[:members] }
  peerdetails ||= { principalMemberName: members[:principal], peerMembers: peermembers }
  zonedetails ||= { name: zonename, type: 'STANDARD', peerZone: 'True', peerZoneDetails: peerdetails }
  (zonearray ||= []) << zonedetails
  payload ||= { zones: zonearray }
  _response, _body = @http_client.post(api_url, body: payload)
end

#zonecreate_standard(fabrickey, zonename, *aliases) ⇒ Object



78
79
80
81
82
83
84
85
# File 'lib/BrocadeAPIClient/zones.rb', line 78

def zonecreate_standard(fabrickey, zonename, *aliases)
  api_url = @base_url + fabrickey.upcase + '/createzoningobject'
  zonearray = []
  zonehash ||= { name: zonename, aliasNames: aliases, type: 'STANDARD' }
  (zonearray ||= []) << zonehash
  payload ||= { zones: zonearray }
  _response, _body = @http_client.post(api_url, body: payload)
end

#zonedbs(fabrickey) ⇒ Object



40
41
42
43
# File 'lib/BrocadeAPIClient/zones.rb', line 40

def zonedbs(fabrickey)
  api_url = @base_url + fabrickey.upcase + '/zonedbs'
  _response, _body = @http_client.get(api_url)
end

#zonedelete(fabrickey, *zonenames) ⇒ Object



99
100
101
102
103
# File 'lib/BrocadeAPIClient/zones.rb', line 99

def zonedelete(fabrickey, *zonenames)
  api_url = @base_url + fabrickey.upcase + '/deletezoningobject'
  payload ||= { zoneNames: zonenames }
  _response, _body = @http_client.post(api_url, body: payload)
end

#zoneshow(fabrickey, zones = 'all', zkey = 'none') ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/BrocadeAPIClient/zones.rb', line 20

def zoneshow(fabrickey, zones = 'all', zkey = 'none')
  api_url = @base_url + fabrickey.upcase + '/zones'
  if zones == 'all'
  elsif zones == 'active'
    api_url += if zkey == 'none'
                 '?active=true'
               else '/' + zkey + '-true'
               end
  elsif zones == 'defined'
    api_url += if zkey == 'none'
                 '?active=false'
               else '/' + zkey + '-false'
               end
  else
    err_msg = 'Unsupported Zoning Option, supported ALL is without zonename'
    raise BrocadeAPIClient::UnsupportedOption
  end
  _response, _body = @http_client.get(api_url)
end