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
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
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
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