Blame libnmstate/net_state.py

Packit b9ca78
#
Packit b9ca78
# Copyright (c) 2020 Red Hat, Inc.
Packit b9ca78
#
Packit b9ca78
# This file is part of nmstate
Packit b9ca78
#
Packit b9ca78
# This program is free software: you can redistribute it and/or modify
Packit b9ca78
# it under the terms of the GNU Lesser General Public License as published by
Packit b9ca78
# the Free Software Foundation, either version 2.1 of the License, or
Packit b9ca78
# (at your option) any later version.
Packit b9ca78
#
Packit b9ca78
# This program is distributed in the hope that it will be useful,
Packit b9ca78
# but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit b9ca78
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit b9ca78
# GNU Lesser General Public License for more details.
Packit b9ca78
#
Packit b9ca78
# You should have received a copy of the GNU Lesser General Public License
Packit b9ca78
# along with this program. If not, see <https://www.gnu.org/licenses/>.
Packit b9ca78
#
Packit b9ca78
Packit b9ca78
import copy
Packit b9ca78
Packit b9ca78
from libnmstate.schema import DNS
Packit b9ca78
from libnmstate.schema import Interface
Packit b9ca78
from libnmstate.schema import Route
Packit b9ca78
from libnmstate.schema import RouteRule
Packit b9ca78
Packit b9ca78
from .ifaces import Ifaces
Packit b9ca78
from .dns import DnsState
Packit b9ca78
from .route import RouteState
Packit b9ca78
from .route_rule import RouteRuleState
Packit b9ca78
Packit b9ca78
Packit b9ca78
class NetState:
Packit b9ca78
    def __init__(self, desire_state, current_state=None, save_to_disk=True):
Packit b9ca78
        if current_state is None:
Packit b9ca78
            current_state = {}
Packit b9ca78
        self._ifaces = Ifaces(
Packit b9ca78
            desire_state.get(Interface.KEY),
Packit b9ca78
            current_state.get(Interface.KEY),
Packit b9ca78
            save_to_disk,
Packit b9ca78
        )
Packit b9ca78
        self._route = RouteState(
Packit b9ca78
            self._ifaces,
Packit b9ca78
            desire_state.get(Route.KEY),
Packit b9ca78
            current_state.get(Route.KEY),
Packit b9ca78
        )
Packit b9ca78
        self._dns = DnsState(
Packit b9ca78
            desire_state.get(DNS.KEY), current_state.get(DNS.KEY),
Packit b9ca78
        )
Packit b9ca78
        self._route_rule = RouteRuleState(
Packit b9ca78
            self._route,
Packit b9ca78
            desire_state.get(RouteRule.KEY),
Packit b9ca78
            current_state.get(RouteRule.KEY),
Packit b9ca78
        )
Packit b9ca78
        self.desire_state = copy.deepcopy(desire_state)
Packit b9ca78
        self.current_state = copy.deepcopy(current_state)
Packit b9ca78
        if self.desire_state:
Packit b9ca78
            self._ifaces.gen_dns_metadata(self._dns, self._route)
Packit b9ca78
            self._ifaces.gen_route_metadata(self._route)
Packit b9ca78
            self._ifaces.gen_route_rule_metadata(self._route_rule, self._route)
Packit b9ca78
Packit b9ca78
    def verify(self, current_state):
Packit b9ca78
        self._ifaces.verify(current_state.get(Interface.KEY))
Packit b9ca78
        self._dns.verify(current_state.get(DNS.KEY))
Packit b9ca78
        self._route.verify(current_state.get(Route.KEY))
Packit b9ca78
        self._route_rule.verify(current_state.get(RouteRule.KEY))
Packit b9ca78
Packit b9ca78
    @property
Packit b9ca78
    def ifaces(self):
Packit b9ca78
        return self._ifaces
Packit b9ca78
Packit b9ca78
    @property
Packit b9ca78
    def dns(self):
Packit b9ca78
        return self._dns