class Vlan
The Vlan
class provides a class implementation and methods for managing the VLANs on the node. This class presents an abstraction
Public Class Methods
This API creates a Vlan
.
Request URL: IP-ADDR:REST-PORT/api/vlans/cfgs/100
payload format of key-value pairs { "vlanid": 100, "member": {"InterfaceName1": "tagged", "InterfaceName": "untagged"} }
@param conn [Class] Connect
object to the node. @param vlan_id [Integer] VLAN number from 1-4095. @param add_tagged_members [Array] List of interfaces to be added to the vlan as tagged members @param add_untagged_members [Array] List of iinterfaces to be added to the vlan as untagged members
@return [RestClient::Request] Rest
output from SONIC in JSON format
# File lib/sonic-rbapi/vlan.rb, line 80 def self.create_vlan(conn, vlan_id, add_tagged_members=nil, add_untagged_members=nil) url = form_url(conn, @vlan_cfg + '/' + vlan_id.to_s) hdr = form_hdr(conn) params = {"vlanid": vlan_id} add_members = nil for i in 0..add_tagged_members.size-1 do tag = {add_tagged_members[i]=> "tagged"} if (add_members == nil) add_members = tag else add_members = add_members.merge(tag) end end for i in 0..add_untagged_members.size-1 do untag = {add_untagged_members[i]=> "untagged"} if (add_members == nil) add_members = untag else add_members = add_members.merge(untag) end end if add_members != nil p1 = {"add_member": add_members} else p1 = {"add_member": {}} end params = params.merge(p1) params = params.to_json Rest.post(conn, url, hdr, params) end
This API deletes a vlan.
Request URL: IP-ADDR:REST-PORT/api/vlans/cfgs/100
@param conn [Class] Connect
object to the node @param vlan_id [Integer] VLAN number from 1-4095
@return [RestClient::Request] Rest
output from SONIC in JSON format
# File lib/sonic-rbapi/vlan.rb, line 171 def self.delete_vlan(conn, vlan_id) url = form_url(conn, @vlan_cfg + '/' + vlan_id.to_s) hdr = form_hdr(conn) Rest.delete(conn, url, hdr) end
This API get the properties of all VLANs.
Request URL: IP-ADDR:REST-PORT/api/vlans/info
@param conn [Class] Connect
object to the node
@return [RestClient::Request] Rest
output from SONIC in JSON format as below
{"Vlan_name": {"vlan_id": 100, "members": {"Ethernet16": "tagged", ...} }, {"vlan_id": 200, "members": {"Ethernet17": "tagged", ...} }, ... }
# File lib/sonic-rbapi/vlan.rb, line 41 def self.get_all_vlan(conn) url = form_url(conn, @vlan_info) hdr = form_hdr(conn) Rest.get(conn, url, hdr) end
This API get the properties of single vlan.
Request URL: IP-ADDR:REST-PORT/api/vlans/info/100
@param conn [Class] Connect
object to the node @param vlan_id [Integer] VLAN number
@return [RestClient::Request] Rest
output from SONIC in JSON format as below
{"Vlan_name": {"vlan_id": 100, "members": {"Ethernet16": "tagged", ...} }, }
# File lib/sonic-rbapi/vlan.rb, line 59 def self.get_vlan(conn, vlan_id) url = form_url(conn, @vlan_info + '/' + vlan_id.to_s) hdr = form_hdr(conn) Rest.get(conn, url, hdr) end
This API updates properties of a VLAN.
Request URL: IP-ADDR:REST-PORT/api/vlans/cfgs/100
payload format of key-value pairs { "add_member": {"Ethernet0": "tagged", "Ethernet4": "untagged"}, "rem_member": ["Ethernet12"], "rem_all": "false" }
@param conn [Class] Connect
object to the node @param vlan_id [Integer] VLAN number from 1-4095 @param add_tagged_members [Array] List of interfaces to be added to the vlan as tagged members @param add_untagged_members [Array] List of iinterfaces to be added to the vlan as untagged members @param rem_members [Array] List of interfaces to be removed from the vlan @param rem_all [Boolean] A flag to remove all members of the Vlan
or not ('true or 'false')
@return [RestClient::Request] Rest
output from SONIC in JSON format
# File lib/sonic-rbapi/vlan.rb, line 129 def self.update_vlan(conn, vlan_id, add_tagged_members=nil, add_untagged_members=nil, rem_members=nil, rem_all='false') url = form_url(conn, @vlan_cfg + '/' + vlan_id.to_s) hdr = form_hdr(conn) add_members = nil params = nil for i in 0..add_tagged_members.size-1 do tag = {add_tagged_members[i]=> "tagged"} if (add_members == nil) add_members = tag else add_members = add_members.merge(tag) end end for i in 0..add_untagged_members.size-1 do untag = {add_untagged_members[i]=> "untagged"} if (add_members == nil) add_members = untag else add_members = add_members.merge(untag) end end if add_members != nil params = {"add_member": add_members} else params = {"add_member": {}} end p1 = {"rem_member": rem_members} params = params.merge(p1) p2 = {"rem_all": rem_all} params = params.merge(p2) params = params.to_json Rest.put(conn, url, hdr, params) end