def get_package_manager():
    if get_package_manager._package_manager is None:
        package_manager = PackageManager(lock=False)
        package_manager.set_finished(
        )  # currently not working. accepting new tasks
        package_manager.logger.parent = get_base_logger()
        log_filter = _PackageManagerLogHandler()
        package_manager.logger.addHandler(log_filter)
        get_package_manager._package_manager = package_manager
    return get_package_manager._package_manager
    def init(self):
        os.umask(
            0o022
        )  # umc umask is too restrictive for app center as it creates a lot of files in docker containers
        self.ucr = ucr_instance()

        self.update_applications_done = False
        install_opener(self.ucr)
        self._is_working = False

        try:
            self.package_manager = PackageManager(
                info_handler=MODULE.process,
                step_handler=None,
                error_handler=MODULE.warn,
                lock=False,
            )
        except SystemError as exc:
            MODULE.error(str(exc))
            raise umcm.UMC_Error(str(exc), status=500)
        self.package_manager.set_finished(
        )  # currently not working. accepting new tasks
        get_package_manager._package_manager = self.package_manager

        # build cache
        _update_modules()
        get_action('list').get_apps()

        # not initialize here: error prone due to network errors and also kinda slow
        self._uu = None
        self._cm = None

        # in order to set the correct locale
        locale.setlocale(locale.LC_ALL, str(self.locale))

        try:
            log_to_logfile()
        except IOError:
            pass

        # connect univention.appcenter.log to the progress-method
        handler = ProgressInfoHandler(self.package_manager)
        handler.setLevel(logging.INFO)
        get_base_logger().addHandler(handler)

        percentage = ProgressPercentageHandler(self.package_manager)
        percentage.setLevel(logging.DEBUG)
        get_base_logger().getChild('actions.install.progress').addHandler(
            percentage)
        get_base_logger().getChild('actions.upgrade.progress').addHandler(
            percentage)
        get_base_logger().getChild('actions.remove.progress').addHandler(
            percentage)
Example #3
0
	def up(self, *args, **kwargs):
		self.package_manager = PackageManager(always_noninteractive=False)
		handler = _PackageManagerLoggerHandlerWithoutProcess(self.message, self.step, self.error)
		self.package_manager.logger.addHandler(handler)

		self.roles_package_map = {
			'domaincontroller_master': 'univention-server-master',
			'domaincontroller_backup': 'univention-server-backup',
			'domaincontroller_slave': 'univention-server-slave',
			'memberserver': 'univention-server-member',
		}
		self.current_server_role = self.ucr.get('server/role')
		self.wanted_server_role = self.profile.get('server/role')
Example #4
0
	def init(self):
		self._finishedLock = threading.Lock()
		self._errors = []
		self.progress_state = Progress()
		self._installation_started = False
		self.package_manager = PackageManager(
			info_handler=self.progress_state.info_handler,
			step_handler=self.progress_state.step_handler,
			error_handler=self.progress_state.error_handler,
			lock=False,
			always_noninteractive=True,
		)
		self.package_manager.set_max_steps(100.0)
		self.original_certificate_file = None
Example #5
0
    def up(self, *args, **kwargs):
        self.package_manager = PackageManager(
            info_handler=self.message,
            step_handler=self.step,
            error_handler=self.error,
            handle_only_frontend_errors=True,  # ignore pmerror status
        )

        self.roles_package_map = {
            'domaincontroller_master': 'univention-server-master',
            'domaincontroller_backup': 'univention-server-backup',
            'domaincontroller_slave': 'univention-server-slave',
            'memberserver': 'univention-server-member',
            'fatclient': 'univention-managed-client',
            'mobileclient': 'univention-mobile-client',
        }
        self.current_server_role = self.get_ucr_var('server/role')
        self.wanted_server_role = self.get_profile_var('server/role')
Example #6
0
    def init(self):
        self.ucr = univention.config_registry.ConfigRegistry()
        self.ucr.load()

        util.install_opener(self.ucr)

        self.package_manager = PackageManager(
            info_handler=MODULE.process,
            step_handler=None,
            error_handler=MODULE.warn,
            lock=False,
            always_noninteractive=True,
        )
        self.uu = UniventionUpdater(False)
        self.component_manager = util.ComponentManager(self.ucr, self.uu)

        # in order to set the correct locale for Application
        locale.setlocale(locale.LC_ALL, str(self.locale))
Example #7
0
	def init(self):
		os.umask(0o022)  # umc umask is too restrictive for app center as it creates a lot of files in docker containers
		self.ucr = ucr_instance()

		self.update_applications_done = False
		util.install_opener(self.ucr)
		self._remote_progress = {}

		try:
			self.package_manager = PackageManager(
				info_handler=MODULE.process,
				step_handler=None,
				error_handler=MODULE.warn,
				lock=False,
			)
		except SystemError as exc:
			MODULE.error(str(exc))
			raise umcm.UMC_Error(str(exc), status=500)
		self.package_manager.set_finished()  # currently not working. accepting new tasks
		self.uu = UniventionUpdater(False)
		self.component_manager = util.ComponentManager(self.ucr, self.uu)
		get_package_manager._package_manager = self.package_manager

		# in order to set the correct locale for Application
		locale.setlocale(locale.LC_ALL, str(self.locale))

		try:
			log_to_logfile()
		except IOError:
			pass

		# connect univention.appcenter.log to the progress-method
		handler = ProgressInfoHandler(self.package_manager)
		handler.setLevel(logging.INFO)
		get_base_logger().addHandler(handler)

		percentage = ProgressPercentageHandler(self.package_manager)
		percentage.setLevel(logging.DEBUG)
		get_base_logger().getChild('actions.install.progress').addHandler(percentage)
		get_base_logger().getChild('actions.upgrade.progress').addHandler(percentage)
		get_base_logger().getChild('actions.remove.progress').addHandler(percentage)

def simple_handler(f):
    def _simple_handler(msg):
        msg = '%s\n\r' % msg.strip()
        f.write(msg)

    return _simple_handler


parser = optparse.OptionParser()
parser.add_option('-a',
                  '--app-id',
                  help='app id to deinstall',
                  metavar='APP_ID')
(options, args) = parser.parse_args()
if not options.app_id:
    raise Exception('app id missing')

ucr = ConfigRegistry()
ucr.load()
updater = UniventionUpdater(False)
package_manager = PackageManager(info_handler=simple_handler(sys.stdout),
                                 error_handler=simple_handler(sys.stderr))
component_manager = ComponentManager(ucr, updater)

app = Application.find(options.app_id)
if app:
    if not app.uninstall(package_manager, component_manager):
        raise Exception('deinstallation of app %s failed' % options.app_id)