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

create_vlan(conn, vlan_id, add_tagged_members=nil, add_untagged_members=nil) click to toggle source

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
delete_vlan(conn, vlan_id) click to toggle source

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
get_all_vlan(conn) click to toggle source

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
get_vlan(conn, vlan_id) click to toggle source

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
update_vlan(conn, vlan_id, add_tagged_members=nil, add_untagged_members=nil, rem_members=nil, rem_all='false') click to toggle source

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