787 lines
15 KiB
Markdown
787 lines
15 KiB
Markdown
# Network Configuration Manager - Python API
|
|
|
|
Photon OS 2.0 provides a Python API for the Network Configuration Manager.
|
|
|
|
- [Setup Instructions](#setup-instructions)
|
|
- [Initialization Steps](#initialization-steps)
|
|
- [Get Online Help](#get-online-help)
|
|
- [Basic Information](#basic-information)
|
|
- [Interface Configuration](#interface-configuration)
|
|
- [IP Address Configuration](#ip-address-configuration)
|
|
- [DNS Configuration](#dns-configuration)
|
|
- [DHCP Options, DUID, and IAID Configuration](#dhcp-options-duid-and-iaid-configuration)
|
|
- [NTP Servers](#ntp-servers)
|
|
|
|
## Setup Instructions
|
|
|
|
To set up and run the latest version of the Network Manager API for Python:
|
|
|
|
````
|
|
# tdnf install pmd pmd-python3
|
|
# systemctl start pmd
|
|
````
|
|
|
|
## Initialization Steps
|
|
|
|
````
|
|
# python3
|
|
>>> import pmd
|
|
>>> net = pmd.server().net
|
|
````
|
|
## Get Online Help
|
|
|
|
Get help for all commands.
|
|
````
|
|
>>> help(net)
|
|
````
|
|
Get help for a specific command.
|
|
````
|
|
>>> help(net.add_ntp_servers)
|
|
-in function add_ntp_servers:
|
|
add_ntp_servers(...) method of [server.net](http://server.net/) instance
|
|
net.add_ntp_servers(ntpservers = ["20.20.20.20", "25.30.40.70"])
|
|
adds ntp servers. returns success: 0, failure: exception.
|
|
(END)
|
|
````
|
|
|
|
## Basic Information
|
|
|
|
### get_system_network_info
|
|
|
|
Get network information details that are common to the entire system.
|
|
|
|
**Syntax**
|
|
|
|
````
|
|
net.get_system_network_info()
|
|
````
|
|
**Returns**
|
|
|
|
- details about the system network (DUID, DNS mode, DNS server list, DNS domain list, NTP server list)
|
|
|
|
**Example**
|
|
````
|
|
>>> system_network_info = netmgmt.get_system_network_info()
|
|
|
|
>>> print ( system_network_info)
|
|
|
|
[{DUID: 00:02:11:22:33:44:55:66:77:20, DNS Mode: (null), DNS ServerList: ['10.10.100.100', '20.20.200.10'], DNS domain list: [' [abcd.com](http://abcd.com)'], NTP ServerList: (null)}]
|
|
````
|
|
|
|
### get_err_info
|
|
|
|
Get information about the specified error number.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_err_info(error = <error_number>)
|
|
````
|
|
**Parameters**
|
|
|
|
- error - error number
|
|
|
|
Here is the list of error numbers:
|
|
|
|
- 4097 - invalid parameter
|
|
- 4098 - not supported
|
|
- 4099 - out of memory
|
|
- 4100 - value not found
|
|
- 4101 - value exists
|
|
- 4102 - invalid interface
|
|
- 4103 - invalid mode
|
|
- 4104 - bad configuration file
|
|
- 4105 - write failed
|
|
- 4106 - timout
|
|
- 4107 - DCHP timeout
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
Example
|
|
````
|
|
>> net.get_err_info(error = 4097)
|
|
|
|
'invalid parameter'
|
|
````
|
|
## Interface Configuration
|
|
|
|
Use these commands to manage the configuration for a network interface.
|
|
|
|
### get_link_info
|
|
|
|
Get the link info for the specified interface or for all interfaces (if no interface is specified).
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_link_info(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name (optional)
|
|
|
|
**Returns**
|
|
|
|
- success: link info
|
|
- failure: exception
|
|
|
|
### get_link_macaddr
|
|
|
|
Get the MAC address for the specified interface or for all interfaces (if no interface is specified).
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_link_macaddr(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name (optional)
|
|
|
|
**Returns**
|
|
|
|
- success: MAC address
|
|
- failure: exception
|
|
|
|
### get_link_mode
|
|
|
|
Get the link mode for the specified interface (auto or manual), or for all interfaces (if no interface is specified).
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_link_mode(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name (optional)
|
|
|
|
**Returns**
|
|
|
|
- success: link mode (auto, manual, or unknown)
|
|
- failure: exception
|
|
|
|
### get_link_mtu
|
|
|
|
Get the MTU of the specified interface or for all interfaces (if no interface is specified).
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_link_mtu(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name (optional)
|
|
|
|
**Returns**
|
|
|
|
- success: link MTU
|
|
- failure: exception
|
|
|
|
### get_link_state
|
|
|
|
Get the link state of the specified interface or for all interfaces (if no interface is specified).
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_link_state(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name (optional)
|
|
|
|
**Returns**
|
|
|
|
- success: link state (up, down, unknown)
|
|
- failure: exception
|
|
|
|
### set_link_down
|
|
|
|
Bring down the specified interface.
|
|
|
|
**Syntax**
|
|
|
|
````
|
|
net.set_link_down(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### set_link_macaddr
|
|
|
|
Set the MAC address of the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_link_macaddr(ifname = interface_name, macaddr = mac_address)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``macaddr`` = MAC address
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### set_link_mode
|
|
|
|
Set the mode (auto or manual) of the specifed interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_link_mode(ifname = interface_name, link_mode = [auto, manual])
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``link_mode`` - auto or manual
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### set_link_mtu
|
|
|
|
Set the MTU for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_link_mtu(ifname = interface_name, mtu = mtu)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``mtu`` - ``mtu``
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### set_link_state
|
|
|
|
Set the state (up or down) of the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_link_state(ifname = interface_name, link_state = [down, up])
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``link_state`` - down or up
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### set_link_up
|
|
|
|
Brings up the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_link_up(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``link_state`` - down or up
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
## IP Address Configuration
|
|
|
|
Use these commands to manage IP address configuration for a network interface.
|
|
|
|
### add_static_ipv6_addr
|
|
|
|
Add a static IPv6 address to the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.add_static_ipv6_addr(ifname = interface_name, addr_prefix = ipv6address_prefix)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``addr_prefix`` - IPv6 address prefix
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### del_static_ipv6_addr
|
|
|
|
Delete a static IPv6 address from the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.del_static_ipv6_addr(ifname = interface_name, addr_prefix = ipv6address_prefix)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``addr_prefix`` - IPv6 address prefix
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### get_ipv4_addr_gateway
|
|
|
|
Get the IPv4 address with the prefix and gateway for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_ipv4_addr_gateway(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- success: IPv4 address with the prefix and gateway
|
|
- failure: exception
|
|
|
|
### get_ipv6_addr
|
|
|
|
Get the list of IPv6 addresses for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_ipv6_addr(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- success: IPv6 address list
|
|
- failure: exception
|
|
|
|
### get_ipv6_addr_mode
|
|
|
|
Get the address mode for the specified interface to determine whether DHCPv6, autoconf are enabled or deactivated.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_ipv6_addr_mode(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- Status for DHCPv6, autoconf (True=enabled, False=deactivated)
|
|
- failure: exception
|
|
|
|
### get_ipv6_gateway
|
|
|
|
Get the IPv6 gateway for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_ipv6_gateway(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- success: IPv6 gateway
|
|
- failure: exception
|
|
|
|
### set_ipv4_addr_gateway
|
|
|
|
Set the IPv4 address with the prefix and gateway for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_ipv4_addr_gateway(ifname = interface_name, addr_mode = [dhcp, static, none], addr_prefix = ipv4addressprefix, gateway = ipv4gateway)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``addr_mode`` - address mode - dhcp, static, or none
|
|
- ``addr_prefix`` - IPv4 address or prefix
|
|
- ``gateway`` - IPv4 gateway
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### set_ipv6_addr_mode
|
|
|
|
Set the address mode for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_ipv6_addr_mode(ifname = interface_name, enable_dhcp = [True, False], enable_autoconf = [True, False])
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``enable_dhcp`` - True to enable, False to deactivate
|
|
- ``enable_autoconf`` - True to enable, False to deactivate
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### set_ipv6_gateway
|
|
|
|
Set the IPv6 gateway for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_ipv6_gateway(ifname = interface_name, gateway = ipv6gateway)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``gateway`` - IPv6 gateway
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
## DNS Configuration
|
|
|
|
Use these commands to manage DNS domains and servers for a network interface.
|
|
|
|
### get_dns_domains
|
|
|
|
Get the list of DNS domains for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_dns_domains(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- success: list of DNS domains
|
|
- failure: exception
|
|
|
|
### get_dns_servers
|
|
|
|
Get the list of DNS servers and the mode for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_dns_servers(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- success: list of DNS servers and mode
|
|
- failure: exception
|
|
|
|
### set_dns_domains
|
|
|
|
Set the list of DNS domains for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_dns_domains(domains = ["domain1","domain2",...], ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``domains`` - comma-separated list of one or more domains
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### set_dns_servers
|
|
|
|
Set the list of DNS servers for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_dns_servers(dns_mode = [dhcp, static], servers = ["server1","server2", ...], ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``dns_mode`` - dhcp or static
|
|
- ``servers`` - comma-separate list of one or more servers
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
## DHCP Options DUID and IAID Configuration
|
|
|
|
### get_link_iaid
|
|
|
|
Get the IAID for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_link_iaid(ifname = interface)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
|
|
**Returns**
|
|
|
|
- success: IAID
|
|
- failure: exception
|
|
|
|
### set_link_iaid
|
|
|
|
Set the IAID for the specified interface.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_link_iaid(ifname = interface_name, iaid = <iaid>)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- iaid - IAID
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### get_dhcp_duid
|
|
|
|
Get the DCHP DUID.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_dhcp_duid(ifname = interface_name)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name (optional)
|
|
|
|
**Returns**
|
|
|
|
- success: DUID
|
|
- failure: exception
|
|
|
|
### set_dhcp_duid
|
|
|
|
Set the DCHP DUID.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_dhcp_duid(ifname = interface_name duid = duid)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name (optional)
|
|
- ``duid`` - DUID to set
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
## NTP Servers
|
|
|
|
Use these commands to manage the NTP servers list.
|
|
|
|
### add_ntp_servers
|
|
|
|
Add one or more NTP servers to the NTP servers list.
|
|
|
|
**Syntax**
|
|
````
|
|
net.add_ntp_servers(ntpservers = ["server1", "server2", ...])
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ntpservers`` - Comma-separated list of NTP servers to add to the list.
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### del_ntp_servers
|
|
|
|
Remove one or more NTP servers from the NTP servers list.
|
|
|
|
**Syntax**
|
|
````
|
|
net.del_ntp_servers(ntpservers = ["server1", "server2", ...])
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ntpservers`` - Comma-separated list of NTP servers to remove from the list.
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### get_ntp_servers
|
|
|
|
Get the NTP servers list.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_ntp_servers()
|
|
````
|
|
**Returns**
|
|
|
|
- success: NTP servers list
|
|
- failure: exception
|
|
|
|
### set_ntp_servers
|
|
|
|
Set the NTP servers list.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_ntp_servers(ntpservers = ["server1", "server2", ...])
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ntpservers`` - Comma-separated list of NTP servers to set in the list.
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### get_hostname
|
|
|
|
Get the host name.
|
|
|
|
**Syntax**
|
|
|
|
net.get_hostname()
|
|
|
|
**Returns**
|
|
|
|
- success: host name
|
|
- failure: exception
|
|
|
|
### set_hostname
|
|
|
|
Set the host name.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_hostname(hostname)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``hostname`` - name to assign to the host
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### wait_for_ip
|
|
|
|
Wait for the specified interface to acquire a valid IP address of the specified IP address type.
|
|
|
|
**Syntax**
|
|
````
|
|
net.wait_for_ip(ifname = interface_name, timeout = timeout, addrtypes = [ipv4, ipv6, static_ipv4, static_ipv6, dhcp_ipv4, dhcp_ipv6, auto_ipv6, link_local_ipv6])
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``timeout`` - maximum time (in seconds) to wait (until the link is up) before timing out of the request; specify 0 for no timeout (wait indefinitely)
|
|
- ``addrtypes`` - one of the following address types: ipv4, ipv6, static_ipv4, static_ipv6, dhcp_ipv4, dhcp_ipv6, auto_ipv6, or link_local_ipv6
|
|
|
|
**Returns**
|
|
|
|
- success: 0 (when the link has an IP of the specified type)
|
|
- failure: exception (for example, timeout expired)
|
|
|
|
### wait_for_link_up
|
|
|
|
Wait for the specified interface to come up.
|
|
|
|
**Syntax**
|
|
````
|
|
net.wait_for_link_up(ifname = interface_name, timeout = timeout)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``ifname`` - interface name
|
|
- ``timeout`` - maximum time (in seconds) to wait (until the link is up) before timing out of the request; specify 0 for no timeout (wait indefinitely)
|
|
|
|
**Returns**
|
|
|
|
- success: 0 (when link is up)
|
|
- failure: exception (for example, timeout expired)
|
|
|
|
### get_network_param
|
|
|
|
Get the specified network configuration parameter for the specified interface or filename.
|
|
|
|
**Syntax**
|
|
````
|
|
net.get_network_param(object = IfName or Filename, paramname = SectionName_KeyName)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``object`` - an interface name (for example, "eth0") or a file name (for example, /etc/systemd/resolved.conf)
|
|
- ``paramname`` - name of a parameter associated with the object; specified in the format SectionName_KeyName (for example, Link_MTUBytes represents the MtuBytes key in [Link] section in [https://www.freedesktop.org/software/systemd/man/systemd.network.html](https://www.freedesktop.org/software/systemd/man/systemd.network.html))
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|
|
|
|
### set_network_param
|
|
|
|
Set the value of a network configuration parameter for the specified interface or filename.
|
|
|
|
**Syntax**
|
|
````
|
|
net.set_network_param(object = interface_name or filename, paramname = SectionName_KeyName, paramvalue = key_value)
|
|
````
|
|
**Parameters**
|
|
|
|
- ``object`` - an interface name (for example, "eth0") or a file name (for example, /etc/systemd/resolved.conf)
|
|
- ``paramname`` - name of a parameter associated with the object; specified in the format SectionName_KeyName (for example, Link_MTUBytes represents the MtuBytes key in [Link] section in [https://www.freedesktop.org/software/systemd/man/systemd.network.html](https://www.freedesktop.org/software/systemd/man/systemd.network.html))
|
|
|
|
**Returns**
|
|
|
|
- success: 0
|
|
- failure: exception
|