class NSXDriver::NSXTdfw
Class Logical Switch
Attributes
ATTRIBUTES
Public Class Methods
CONSTRUCTOR Creates OpenNebula
section if not exists
# File lib/nsxt_dfw.rb, line 26 def initialize(nsx_client) super(nsx_client) # Construct base URLs @base_url = NSXConstants::NSXT_DFW_BASE @url_sections = @base_url + \ NSXConstants::NSXT_DFW_SECTIONS @one_section_id = init_section end
Public Instance Methods
Create new rule
# File lib/nsxt_dfw.rb, line 160 def create_rule(rule_spec, section_id = @one_section_id) # Get revision from section section = section_by_id(section_id) unless section error_msg = "Section with id #{section_id} not found" error = NSXError::ObjectNotFound .new(error_msg) raise error end revision_id = section['_revision'] rule_spec['_revision'] = revision_id rule_spec = rule_spec.to_json url = @url_sections + '/' + section_id + '/rules' @nsx_client.post(url, rule_spec) end
Create new section and return the section
# File lib/nsxt_dfw.rb, line 82 def create_section(section_name) section_spec = %( { "display_name": "#{section_name}", "section_type": "LAYER3", "stateful": true } ) section_id = @nsx_client.post(@url_sections, section_spec) result = section_by_id(section_id) raise 'Section was not created in DFW' unless result result end
Delete rule
# File lib/nsxt_dfw.rb, line 188 def delete_rule(rule_id, section_id = @one_section_id) url = @url_sections + '/' + section_id + '/rules/' + rule_id # Delete receive a 200 OK also if the rule doesn't exist @nsx_client.delete(url) end
Delete section Params:
-
section_id: [String] ID of the section or @one_section_id
# File lib/nsxt_dfw.rb, line 100 def delete_section(section_id = @one_section_id) url = @url_sections + '/' + section_id @nsx_client.delete(url) end
Sections Creates OpenNebula
section if not exists and returns its section_id. Returns its section_id if OpenNebula
section already exists
# File lib/nsxt_dfw.rb, line 39 def init_section one_section = section_by_name(NSXConstants::ONE_SECTION_NAME) one_section ||= create_section(NSXConstants::ONE_SECTION_NAME) return one_section['id'] if one_section end
Get rule by id Return: rule | nil
# File lib/nsxt_dfw.rb, line 117 def rule_by_id(rule_id) url = @base_url + '/rules/' + rule_id valid_codes = [NSXConstants::CODE_CREATED, NSXConstants::CODE_OK, NSXConstants::CODE_BAD_REQUEST, NSXConstants::CODE_NOT_FOUND] additional_headers = [] @nsx_client.get(url, additional_headers, valid_codes) end
Rules Get all rules of a Section, OpenNebula
section if it’s not defined Return:
- Array
# File lib/nsxt_dfw.rb, line 109 def rules(section_id = @one_section_id) url = @url_sections + '/' + section_id + '/rules' @nsx_client.get(url) end
Get rules by name Return:
- Array with rules or an empty array
# File lib/nsxt_dfw.rb, line 130 def rules_by_name(rule_name, section_id = @one_section_id) rules = [] return rules unless section_id all_rules = rules(section_id) return rules unless all_rules all_rules['results'].each do |rule| rules << rule if rule['display_name'] == rule_name end rules end
Get rule by regex Return:
- Array with rules or an empty array
# File lib/nsxt_dfw.rb, line 146 def rules_by_regex(regex, section_id = @one_section_id) rules = [] return rules unless section_id all_rules = rules(section_id) return rules unless all_rules all_rules['results'].each do |rule| rules << rule if rule['display_name'].match(regex) end rules end
Get section by id Params:
-
section_id: [String] ID of the section or @one_section_id
Return
-
nil | section
# File lib/nsxt_dfw.rb, line 60 def section_by_id(section_id = @one_section_id) url = @url_sections + '/' + section_id @nsx_client.get(url) end
Get section by name Params:
-
section_name: Name of the section
Return
-
nil | section
# File lib/nsxt_dfw.rb, line 70 def section_by_name(section_name) result = nil all_sections = sections return result unless all_sections all_sections.each do |section| result = section if section['display_name'] == section_name end result end
Get all sections Params:
-
None
Return
-
nil | sections
# File lib/nsxt_dfw.rb, line 50 def sections result = @nsx_client.get(@url_sections) result['results'] end
Update rule
# File lib/nsxt_dfw.rb, line 177 def update_rule(rule_id, rule_spec, section_id = @one_section_id) url = @url_sections + '/' + section_id + '/rules/' + rule_id rule = rule_by_id(rule_id) raise "Rule id #{rule_id} not found" unless rule rule_spec['_revision'] = rule['_revision'] rule_spec = rule_spec.to_json @nsx_client.put(url, rule_spec) end