Exemple #1
0
	def read_variables(self, filename=None, package=None, override=False):
		# type: (str, str, bool) -> None
		"""
		Read variable descriptions.

		:param filename: Explicit filename for loading.
		:param package: Explicit package name.
		:param override: `True` to overwrite already loaded descriptions.
		:raises AttributeError: if neither `filename` nor `package` are given.
		"""
		if filename:
			pass
		elif package:
			filename = os.path.join(ConfigRegistryInfo.BASE_DIR, ConfigRegistryInfo.VARIABLES, package + ConfigRegistryInfo.FILE_SUFFIX)
		else:
			raise AttributeError("neither 'filename' nor 'package' is specified")
		cfg = uit.UnicodeConfig()
		cfg.read(filename)
		for sec in cfg.sections():
			# is a pattern?
			if sec.find('.*') != -1:
				self._patterns[sec] = cfg.items(sec)
				continue
			# variable already known?
			if not override and sec in self.variables:
				continue
			var = Variable()
			for name, value in cfg.items(sec):
				var[name] = value
			# get current value
			if self._configRegistry is not None:
				var.value = self._configRegistry.get(sec, None)
			self.variables[sec] = var
    def read_services(self, filename=None, package=None, override=False):
        """
		Read start/stop levels of services.

		:param filename: Explicit filename for loading.
		:param package: Explicit package name.
		:param override: `True` to overwrite already loaded descriptions.
		:raises AttributeError: if neither `filename` nor `package` are given.
		"""
        if not filename and not package:
            raise AttributeError(
                "neither 'filename' nor 'package' is specified")
        if not filename:
            filename = os.path.join(ServiceInfo.BASE_DIR, ServiceInfo.SERVICES,
                                    package + ServiceInfo.FILE_SUFFIX)
        cfg = uit.UnicodeConfig()
        cfg.read(filename)
        for sec in cfg.sections():
            # service already known?
            if not override and sec in self.services:
                continue
            srv = Service()
            srv['name'] = sec
            for name, value in cfg.items(sec):
                srv[name] = value
            for path in srv.get('programs', '').split(','):
                # "programs" defines the "/proc/self/cmdline" of the service,
                # not the executable, therefore we test for a leading "/":
                # check if it is a real file    split to remove parameters
                if path.startswith('/') and not os.path.exists(
                        path.split(' ', 1)[0]):
                    break  # ==> do not execute else
            else:
                self.services[sec] = srv
 def read_variables(self, filename=None, package=None, override=False):
     """Read variable descriptions."""
     if filename:
         pass
     elif package:
         filename = os.path.join(ConfigRegistryInfo.BASE_DIR,
                                 ConfigRegistryInfo.VARIABLES,
                                 package + ConfigRegistryInfo.FILE_SUFFIX)
     else:
         raise AttributeError(
             "neither 'filename' nor 'package' is specified")
     cfg = uit.UnicodeConfig()
     cfg.read(filename)
     for sec in cfg.sections():
         # is a pattern?
         if sec.find('.*') != -1:
             self.__patterns[sec] = cfg.items(sec)
             continue
         # variable already known?
         if not override and sec in self.variables:
             continue
         var = Variable()
         for name, value in cfg.items(sec):
             var[name] = value
         # get current value
         if self.__configRegistry is not None:
             var.value = self.__configRegistry.get(sec, None)
         self.variables[sec] = var
Exemple #4
0
	def _write_variables(self, filename=None, package=None):
		# type: (str, str) -> bool
		"""
		Persist the variable descriptions into a file.

		:param filename: Explicit filename for saving.
		:param package: Explicit package name.
		:raises AttributeError: if neither `filename` nor `package` are given.
		:returns: `True` on success, `False` otherwise.
		"""
		if filename:
			pass
		elif package:
			filename = os.path.join(ConfigRegistryInfo.BASE_DIR, ConfigRegistryInfo.VARIABLES, package + ConfigRegistryInfo.FILE_SUFFIX)
		else:
			raise AttributeError("neither 'filename' nor 'package' is specified")

		try:
			with open(filename, 'w') as fd:
				cfg = uit.UnicodeConfig()
				for name, var in self.variables.items():
					cfg.add_section(name)
					for key in var.keys():
						items = var.normalize(key)
						for item, value in items.items():
							value = value
							cfg.set(name, item, value)

				cfg.write(fd)

				return True
		except EnvironmentError:
			return False
    def __write_variables(self, filename=None, package=None):
        """Persist the variable descriptions into a file."""
        if filename:
            pass
        elif package:
            filename = os.path.join(ConfigRegistryInfo.BASE_DIR,
                                    ConfigRegistryInfo.VARIABLES,
                                    package + ConfigRegistryInfo.FILE_SUFFIX)
        else:
            raise AttributeError(
                "neither 'filename' nor 'package' is specified")
        try:
            fd = open(filename, 'w')
        except IOError:
            return False

        cfg = uit.UnicodeConfig()
        for name, var in self.variables.items():
            cfg.add_section(name)
            for key in var.keys():
                items = var.normalize(key)
                for item, value in items.items():
                    value = value
                    cfg.set(name, item, value)

        cfg.write(fd)
        fd.close()

        return True
 def read_categories(self, filename):
     """Load a single category description file."""
     cfg = uit.UnicodeConfig()
     cfg.read(filename)
     for sec in cfg.sections():
         # category already known?
         cat_name = sec.lower()
         if cat_name in self.categories:
             continue
         cat = Category()
         for name, value in cfg.items(sec):
             cat[name] = value
         self.categories[cat_name] = cat
Exemple #7
0
    def write_customized(self):
        """Save service cusomization."""
        filename = os.path.join(ServiceInfo.BASE_DIR, ServiceInfo.SERVICES,
                                ServiceInfo.CUSTOMIZED)
        try:
            with open(filename, 'w') as fd:
                cfg = uit.UnicodeConfig()
                for name, srv in self.services.items():
                    cfg.add_section(name)
                    for key in srv.keys():
                        items = srv.normalize(key)
                        for item, value in items.items():
                            cfg.set(name, item, value)

                cfg.write(fd)

                return True
        except EnvironmentError:
            return False
Exemple #8
0
    def write_customized(self):
        filename = os.path.join(ServiceInfo.BASE_DIR, ServiceInfo.SERVICES,
                                ServiceInfo.CUSTOMIZED)
        try:
            fd = open(filename, 'w')
        except:
            return False

        cfg = uit.UnicodeConfig()
        for name, srv in self.services.items():
            cfg.add_section(name)
            for key in var.keys():
                items = var.normalize(key)
                for item, value in items.items():
                    cfg.set(name, item, value)

        cfg.write(fd)
        fd.close()

        return True
Exemple #9
0
	def cfg(self):
		"""Return UnicodeConfig instance."""
		return uit.UnicodeConfig()