def _upgrade_docker(self, app, args):
     install = get_action('install')()
     action_args = install._build_namespace(
         _namespace=args,
         app=app,
         set_vars=self._get_configure_settings(self.old_app,
                                               filter_action=False),
         send_info=False,
         skip_checks=['must_not_be_installed'])
     if install.call_with_namespace(action_args):
         app_cache = Apps()
         for _app in app_cache.get_all_apps():
             if _app.plugin_of == app.id and _app.is_installed():
                 _app = app_cache.find(_app.id, latest=True)
                 if _app.docker:
                     _old_app = self.old_app
                     self._upgrade_docker(_app, args)
                     self.old_app = _old_app
         remove = get_action('remove')()
         action_args = remove._build_namespace(
             _namespace=args,
             app=self.old_app,
             send_info=False,
             skip_checks=['must_not_be_depended_on'])
         remove._remove_app(self.old_app, action_args)
         if remove._unregister_component(self.old_app):
             update_packages()
         self._call_join_script(
             app, args
         )  # run again in case remove() called an installed unjoin script
         self.old_app = app
Beispiel #2
0
	def install(self):
		packages = self._get_software_packages()
		if packages:
			if packages_are_installed(packages, strict=False):
				mark_packages_as_manually_installed(packages)
			else:
				database_logger.info('Installing/upgrading %s' % ', '.join(packages))
				update_packages()
				if not install_packages(packages):
					raise DatabaseCreationFailed('Could not install software packages')
Beispiel #3
0
 def _install_app(self, app, args):
     if self._register_component(app):
         update_packages()
     if app.default_packages_master:
         if ucr_get('server/role') == 'domaincontroller_master':
             self._install_master_packages(app)
             self.percentage = 30
         for host, is_master in find_hosts_for_master_packages():
             self._install_only_master_packages_remotely(
                 app, host, is_master, args)
         if ucr_get('server/role') == 'domaincontroller_backup':
             self._install_master_packages(app)
             self.percentage = 30
     ret = self._install_packages(app.get_packages())
     self.percentage = 80
     return ret
	def _do_it(self, app, args):
		if not self._remove_app(app, args):
			raise RemoveFailed()
		self.percentage = 45
		self._unregister_app(app, args)
		self.percentage = 50
		self._unregister_attributes(app, args)
		self.percentage = 60
		if self._unregister_component(app):
			update_packages()
		self.percentage = 70
		self._unregister_files(app)
		self.percentage = 80
		self._call_unjoin_script(app, args)
		if not app.docker:
			ucr_save({'appcenter/prudence/docker/%s' % app.id: 'yes'})
Beispiel #5
0
 def _install_master_packages(self, app, unregister_if_uninstalled=False):
     old_app = Apps().find(app.id)
     was_installed = old_app.is_installed()
     if self._register_component(app):
         update_packages()
     ret = self._install_packages(app.default_packages_master)
     if was_installed:
         if old_app != app:
             self.log('Re-registering component for %s' % old_app)
             if self._register_component(old_app):
                 update_packages()
     elif unregister_if_uninstalled:
         self.log('Unregistering component for %s' % app)
         if self._unregister_component(app):
             update_packages()
     return ret
Beispiel #6
0
 def _install_packages_dry_run(self, app, args, with_dist_upgrade):
     original_app = Apps().find(app.id)
     if original_app.is_installed():
         was_installed = True
     else:
         was_installed = False
     self.log('Dry run for %s' % app)
     if self._register_component(app):
         self.debug('Updating packages')
         update_packages()
     self.debug('Component %s registered' % app.component_id)
     pkgs = self._get_packages_for_dry_run(app, args)
     self.debug('Dry running with %r' % pkgs)
     ret = install_packages_dry_run(pkgs)
     if with_dist_upgrade:
         upgrade_ret = dist_upgrade_dry_run()
         ret['install'] = sorted(
             set(ret['install']).union(set(upgrade_ret['install'])))
         ret['remove'] = sorted(
             set(ret['remove']).union(set(upgrade_ret['remove'])))
         ret['broken'] = sorted(
             set(ret['broken']).union(set(upgrade_ret['broken'])))
     if args.install_master_packages_remotely:
         # TODO: should test remotely
         self.log('Not testing package changes of remote packages!')
         pass
     if args.dry_run or ret['broken']:
         if was_installed:
             if self._register_component(original_app):
                 self.debug('Updating packages')
                 update_packages()
             self.debug('Component %s reregistered' %
                        original_app.component_id)
         else:
             if self._unregister_component(app):
                 self.debug('Updating packages')
                 update_packages()
             self.debug('Component %s unregistered' % app.component_id)
     return ret