Blame libnmstate/net_state.py

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