Source code for ironic.networking.api

#
#    Licensed under the Apache License, Version 2.0 (the "License"); you may
#    not use this file except in compliance with the License. You may obtain
#    a copy of the License at
#
#         http://www.apache.org/licenses/LICENSE-2.0
#
#    Unless required by applicable law or agreed to in writing, software
#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
#    License for the specific language governing permissions and limitations
#    under the License.

"""
Networking API for other parts of Ironic to use.
"""

from ironic.networking import rpcapi

# Global networking API instance
_NETWORKING_API = None


[docs] def get_networking_api(): """Get the networking API instance. :returns: NetworkingAPI instance """ global _NETWORKING_API if _NETWORKING_API is None: _NETWORKING_API = rpcapi.NetworkingAPI() return _NETWORKING_API
[docs] def update_port( context, switch_id, port_name, description, mode, native_vlan, allowed_vlans=None, lag_name=None, default_vlan=None ): """Update a network switch port configuration. This is a convenience function that other parts of Ironic can use to update network switch port configurations. :param context: request context. :param switch_id: Identifier for the switch. :param port_name: Name of the port on the switch. :param description: Description to set for the port. :param mode: Port mode ('access', 'trunk', or 'hybrid'). :param native_vlan: VLAN ID to be set on the port. :param allowed_vlans: List of allowed VLAN IDs to be added(optional). :param default_vlan: VLAN ID to removed from the port(optional). :param lag_name: LAG name if port is part of a link aggregation group. :raises: InvalidParameterValue if validation fails. :raises: NetworkError if the network operation fails. :returns: Dictionary containing the updated port configuration. """ api = get_networking_api() return api.update_port( context, switch_id, port_name, description, mode, native_vlan, allowed_vlans=allowed_vlans, lag_name=lag_name, default_vlan=default_vlan )
[docs] def reset_port( context, switch_id, port_name, native_vlan=None, allowed_vlans=None, default_vlan=None, ): """Reset a network switch port to default configuration. This is a convenience function that other parts of Ironic can use to reset network switch ports to their default configurations. :param context: request context. :param switch_id: Identifier for the switch. :param port_name: Name of the port on the switch. :param native_vlan: VLAN ID to be removed from the port. :param allowed_vlans: List of allowed VLAN IDs to be removed(optional). :param default_vlan: VLAN ID to restore onto the port(optional). :raises: InvalidParameterValue if validation fails. :raises: NetworkError if the network operation fails. :returns: Dictionary containing the reset port configuration. """ api = get_networking_api() return api.reset_port( context, switch_id, port_name, native_vlan, allowed_vlans=allowed_vlans, default_vlan=default_vlan )
[docs] def update_lag( context, switch_ids, lag_name, description, mode, native_vlan, aggregation_mode, allowed_vlans=None, default_vlan=None ): """Update a link aggregation group (LAG) configuration. This is a convenience function that other parts of Ironic can use to update LAG configurations. :param context: request context. :param switch_ids: List of switch identifiers. :param lag_name: Name of the LAG. :param description: Description for the LAG. :param mode: LAG mode ('access' or 'trunk'). :param native_vlan: VLAN ID to be set for the LAG. :param aggregation_mode: Aggregation mode (e.g., 'lacp', 'static'). :param allowed_vlans: List of allowed VLAN IDs to be added (optional). :param default_vlan: VLAN ID to removed from the port(optional). :raises: InvalidParameterValue if validation fails. :raises: NetworkError if the network operation fails. :returns: Dictionary containing the updated LAG configuration. """ api = get_networking_api() return api.update_lag( context, switch_ids, lag_name, description, mode, native_vlan, aggregation_mode, allowed_vlans=allowed_vlans, default_vlan=default_vlan )
[docs] def delete_lag(context, switch_ids, lag_name): """Delete a link aggregation group (LAG) configuration. This is a convenience function that other parts of Ironic can use to delete LAG configurations. :param context: request context. :param switch_ids: List of switch identifiers. :param lag_name: Name of the LAG to delete. :raises: InvalidParameterValue if validation fails. :raises: NetworkError if the network operation fails. :returns: Dictionary containing the deletion status. """ api = get_networking_api() return api.delete_lag(context, switch_ids, lag_name)