class Ipintf

The Ipintf class provides a class implementation and methods for managing the Ip Interfaces on the node. This class presents an abstraction

Public Class Methods

create_ip_intf(conn, intf, ipv4_addr=nil, ipv4_prefix_len=0, ipv6_addr=nil, ipv6_prefix_len=0, gwaddr=nil, forced_routes=nil) click to toggle source

This API creates the IP interface.

Request URL: IP-ADDR:REST-PORT/api/ips/cfgs

payload format of key-value pairs
 {
  "inf_name": <inf_name>,
  "inf_name": <inf_name>,
  "ipv4_addr": <ipv4_addr>,
  "ipv4_prefix_len": <ipv4_prefix_len>,
  "ipv6_addr": <ipv6_addr>,
  "ipv6_prefix_len": <ipv6_prefix_len>,
  "gwaddr": <gwaddr>,
  "forced_routes": <forced_routes>
 }

@param conn [Class] Connect object to the node @param intf [String] IP interface name like EthernetX, PortChannelXXX, VlanXXX, LoopbackX or eth0 for management interface @param ipv4_addr [String] IPv4 address @param ipv4_prefix_len [Integer] Prefix len for the IPv4 address. Valid Values: 0-32 for IPv4 @param ipv6_addr [String] IPv6 address @param ipv6_prefix_len [Integer] Prefix len for the IPv6 address. Valid Values: 0-128 for IPv4 @param gwaddr [String] Gateway addr for mgmt interface only (optional). Valid Values: Valid IPv4 or IPv6 addresses @param forced_routes [String] Routes for mgmt interface only (optional). Valid Values: A list of strings. Eg: [“10.10.10.0/24”, “192.168.5.0/24”]

@return [RestClient::Request] Rest output from SONIC in JSON format

# File lib/sonic-rbapi/ip.rb, line 79
def self.create_ip_intf(conn, intf, ipv4_addr=nil, ipv4_prefix_len=0, ipv6_addr=nil, ipv6_prefix_len=0, gwaddr=nil, forced_routes=nil)
  url = form_url(conn, @ip_cfg + '/' + intf)
  hdr = form_hdr(conn)
  params = {"inf_name": intf}
  if ipv4_addr != nil
    p1 = {"ipv4_addr": ipv4_addr, "ipv4_prefix_len": ipv4_prefix_len}
    params = params.merge(p1);
  end
  if ipv6_addr != nil
    p2 = {"ipv6_addr": ipv6_addr, "ipv6_prefix_len": ipv6_prefix_len}
    params = params.merge(p2);
  end
  if gwaddr != nil
    p3 = {"gwaddr": gwaddr}
    params = params.merge(p3);
  end
  if forced_routes != nil
    p4 = {"forced_routes": forced_routes}
    params = params.merge(p4);
  end
  params = params.to_json
  Rest.post(conn, url, hdr, params)
end
delete_ip_intf(conn, intf_name, ip_addr, netmask) click to toggle source

This API deletes the ip interface.

Request URI: /api/ips/cfgs/inf_name?ip_addr=10.1.1.1&mask=24

@param conn [Class] Connect object to the node @param intf_name [String] IP interface name as a string like Ethernet0, Vlan100, PortChannel20 @param ip_addr [String] IP address of the interface is about to delete @param netmask [String] Net mask of the interface is about to delete

@return [RestClient::Request] Rest output from SONIC in JSON format

# File lib/sonic-rbapi/ip.rb, line 113
def self.delete_ip_intf(conn, intf_name, ip_addr, netmask)
  url = form_url(conn, @ip_cfg + '/' + intf_name + '?ip_addr=' + ip_addr + '&mask=' + netmask.to_s)
  hdr = form_hdr(conn)
  Rest.delete(conn, url, hdr)
end
get_ip_intf(conn, intf_name=nil) click to toggle source

This API gets the IP interface.

Request URL: IP-ADDR:REST-PORT/api/ips/cfgs

@param conn [Class] Connect object to the node @param intf_name [String] IP interface name as a string like Ethernet0, Vlan100, PortChannel20(optional)

@return [RestClient::Request] Rest output from SONIC in JSON format

{
  "IntfName": {
      "ipv4_addr ": "",
      "ipv4_prefix_len": "",
      "ipv6_addr ": "",
      "ipv6_prefix_len": "",
      “mtu”:
      “admin_status”:””
   },
   …………
 }
# File lib/sonic-rbapi/ip.rb, line 44
def self.get_ip_intf(conn, intf_name=nil)
  if intf_name == nil
    url = form_url(conn, @ip_cfg)
  else
    url = form_url(conn, @ip_cfg + '/' + intf_name)
  end
  hdr = form_hdr(conn)
  Rest.get(conn, url, hdr)
end