Source code for isomer.provisions.system

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

# Isomer - The distributed application framework
# ==============================================
# Copyright (C) 2011-2020 Heiko 'riot' Weinen <riot@c-base.org> and others.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.

"""
Schema: System
==============

Contains
--------

System: Global systemwide settings


"""

from isomer.misc.std import std_salt
from isomer.logger import isolog, warn
from uuid import uuid4

SystemConfiguration = {
    "uuid": str(uuid4()),
    "salt": std_salt(),
    "active": True,
    "name": "Default System Configuration",
    "description": "Default System description",
    "hostname": "localhost",
    "provisions": {"packages": ["user"]},
}


[docs]def provision_system_config( items, database_name, overwrite=False, clear=False, skip_user_check=False ): """Provision a basic system configuration""" from isomer.provisions.base import provisionList from isomer.database import objectmodels default_system_config_count = objectmodels["systemconfig"].count( {"name": "Default System Configuration"} ) if default_system_config_count == 0 or (clear or overwrite): provisionList( [SystemConfiguration], "systemconfig", overwrite, clear, skip_user_check ) isolog("Provisioning: System: Done.", emitter="PROVISIONS") else: isolog( "Default system configuration already present.", lvl=warn, emitter="PROVISIONS", )
provision = { "data": SystemConfiguration, "method": provision_system_config, "dependencies": "user", }