Source code for cobbler.items.mgmtclass

from past.builtins import str
from cobbler.items import item
from cobbler import utils
from cobbler.cexceptions import CX
from cobbler.utils import _


# this data structure is described in item.py
FIELDS = [
    # non-editable in UI (internal)
    ["ctime", 0, 0, "", False, "", 0, "int"],
    ["depth", 2, 0, "", False, "", 0, "float"],
    ["is_definition", False, 0, "Is Definition?", True, "Treat this class as a definition (puppet only)", 0, "bool"],
    ["mtime", 0, 0, "", False, "", 0, "int"],
    ["uid", "", 0, "", False, "", 0, "str"],

    # editable in UI
    ["class_name", "", 0, "Class Name", True, "Actual Class Name (leave blank to use the name field)", 0, "str"],
    ["comment", "", 0, "Comment", True, "Free form text description", 0, "str"],
    ["files", [], 0, "Files", True, "File resources", 0, "list"],
    ["name", "", 0, "Name", True, "Ex: F10-i386-webserver", 0, "str"],
    ["owners", "SETTINGS:default_ownership", "SETTINGS:default_ownership", "Owners", True, "Owners list for authz_ownership (space delimited)", 0, "list"],
    ["packages", [], 0, "Packages", True, "Package resources", 0, "list"],
    ["params", {}, 0, "Parameters/Variables", True, "List of parameters/variables", 0, "dict"],
]


[docs]class Mgmtclass(item.Item): TYPE_NAME = _("mgmtclass") COLLECTION_TYPE = "mgmtclass" def __init__(self, *args, **kwargs): super(Mgmtclass, self).__init__(*args, **kwargs) self.params = None # # override some base class methods first (item.Item) #
[docs] def make_clone(self): _dict = self.to_dict() cloned = Mgmtclass(self.collection_mgr) cloned.from_dict(_dict) return cloned
[docs] def get_fields(self): return FIELDS
[docs] def check_if_valid(self): if not self.name: raise CX("name is required")
# # specific methods for item.Mgmtclass #
[docs] def set_packages(self, packages): self.packages = utils.input_string_or_list(packages)
[docs] def set_files(self, files): self.files = utils.input_string_or_list(files)
[docs] def set_params(self, params): (success, value) = utils.input_string_or_dict(params, allow_multiples=True) if not success: raise CX(_("invalid parameters")) else: self.params = value
[docs] def set_is_definition(self, isdef): self.is_definition = utils.input_boolean(isdef)
[docs] def set_class_name(self, name): if not isinstance(name, str): raise CX(_("class name must be a string")) for x in name: if not x.isalnum() and x not in ["_", "-", ".", ":", "+"]: raise CX(_("invalid characters in class name: '%s'" % name)) self.class_name = name
# EOF