[entropy.server] remove SpmService instance attribute, create Spm() method

This commit is contained in:
Fabio Erculiani
2009-08-11 10:12:13 +02:00
parent 52ecc48012
commit 0f40ce99a8
3 changed files with 58 additions and 41 deletions

View File

@@ -35,6 +35,7 @@ from entropy.i18n import _
from entropy.core import SystemSettings, SystemSettingsPlugin
from entropy.transceivers import FtpInterface
from entropy.db import EntropyRepository
from entropy.spm import get_spm
class ServerSystemSettingsPlugin(SystemSettingsPlugin):
@@ -470,9 +471,18 @@ class Server(Singleton, TextInterface):
self.dumpTools = self.ClientService.dumpTools
self.QA = self.ClientService.QA
self.backup_entropy_settings()
self.SpmService = self.ClientService.Spm()
self.MirrorsService = MirrorsServer(self)
def Spm(self):
"""
Get Source Package Manager interface instance.
@return: Source Package Manager interface instance
@rtype: entropy.spm.SpmPlugin based instance
"""
return get_spm(self)
def setup_entropy_settings(self, repo = None):
srv_set = self.SystemSettings[self.sys_settings_plugin_id]['server']
curr_repoid = srv_set['default_repository_id']
@@ -992,7 +1002,7 @@ class Server(Singleton, TextInterface):
repo)
else:
spm = self.SpmService
spm = self.Spm()
# grab portdir
updates_dir = etpConst['systemroot'] + \
spm.get_spm_setting("PORTDIR") + "/profiles/updates"
@@ -1021,7 +1031,7 @@ class Server(Singleton, TextInterface):
repo_db.clearTreeupdatesEntries(repo)
updates_dir = etpConst['systemroot'] + \
self.SpmService.get_spm_setting("PORTDIR") + "/profiles/updates"
self.Spm().get_spm_setting("PORTDIR") + "/profiles/updates"
update_files = self.entropyTools.sort_update_files(
os.listdir(updates_dir))
update_files = [os.path.join(updates_dir, x) for x in update_files]
@@ -1318,7 +1328,7 @@ class Server(Singleton, TextInterface):
header = red(" @@ ")
)
packages = self.SpmService.query_belongs_multiple(brokenexecs)
packages = self.Spm().query_belongs_multiple(brokenexecs)
if packages:
mytxt = "%s:" % (_("These are the matched packages"),)
@@ -1377,7 +1387,7 @@ class Server(Singleton, TextInterface):
type = "info",
header = red(" @@ ")
)
installed_packages, length = self.SpmService.get_installed_packages()
installed_packages, length = self.Spm().get_installed_packages()
not_found = {}
count = 0
for installed_package in installed_packages:
@@ -1393,9 +1403,9 @@ class Server(Singleton, TextInterface):
header = darkred(" @@ ")
)
key, slot = (self.entropyTools.dep_getkey(installed_package),
self.SpmService.get_installed_package_slot(installed_package),)
self.Spm().get_installed_package_slot(installed_package),)
pkg_atom = "%s:%s" % (key, slot,)
tree_atom = self.SpmService.get_best_atom(pkg_atom)
tree_atom = self.Spm().get_best_atom(pkg_atom)
if not tree_atom:
not_found[installed_package] = pkg_atom
self.updateProgress(
@@ -2119,7 +2129,7 @@ class Server(Singleton, TextInterface):
header = brown(" * "),
back = True
)
mydata = self.SpmService.extract_pkg_metadata(package_file,
mydata = self.Spm().extract_pkg_metadata(package_file,
inject = inject)
idpackage, revision, mydata = dbconn.handlePackage(mydata)
@@ -2418,7 +2428,7 @@ class Server(Singleton, TextInterface):
return False
def quickpkg(self, atom, storedir):
return self.SpmService.quickpkg(atom, storedir)
return self.Spm().quickpkg(atom, storedir)
def remove_packages(self, idpackages, repo = None):
@@ -2775,7 +2785,7 @@ class Server(Singleton, TextInterface):
def scan_package_changes(self):
installed_packages = self.SpmService.get_installed_packages_counter()
installed_packages = self.Spm().get_installed_packages_counter()
installed_counters = set()
to_be_added = set()
to_be_removed = set()
@@ -2837,7 +2847,7 @@ class Server(Singleton, TextInterface):
add = True
for spm_atom, spm_counter in to_be_added:
addslot = self.SpmService.get_installed_package_slot(
addslot = self.Spm().get_installed_package_slot(
spm_atom)
addkey = self.entropyTools.dep_getkey(spm_atom)
# workaround for ebuilds not having slot
@@ -2863,7 +2873,7 @@ class Server(Singleton, TextInterface):
# search into portage then
try:
key, slot = dbconn.retrieveKeySlot(idpackage)
trashed = self.SpmService.get_installed_atom(
trashed = self.Spm().get_installed_atom(
key+":"+slot)
except TypeError: # referred to retrieveKeySlot
trashed = True
@@ -3110,7 +3120,7 @@ class Server(Singleton, TextInterface):
pkg_path = os.path.join(self.get_local_packages_directory(repo),
branch, pkg)
mydata = self.SpmService.extract_pkg_metadata(pkg_path,
mydata = self.Spm().extract_pkg_metadata(pkg_path,
inject = doinject)
# get previous revision
@@ -3903,7 +3913,7 @@ class Server(Singleton, TextInterface):
repo = self.default_repository
# portage sets
sets_data = self.SpmService.get_sets_expanded(builtin_sets = False)
sets_data = self.Spm().get_sets_expanded(builtin_sets = False)
sets_data.update(self.get_entropy_sets(repo, branch))
if validate:

View File

@@ -253,15 +253,16 @@ class Base:
return False,'no item in queue'
use_data = {}
spm = self.SystemManagerExecutor.SystemInterface.Entropy.Spm()
for atom in atoms:
try:
status = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.enable_package_useflags(atom, useflags)
status = spm.enable_package_useflags(atom, useflags)
except:
continue
if status:
use_data[atom] = {}
matched_atom = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_best_atom(atom)
use_data[atom] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_package_useflags(matched_atom)
matched_atom = spm.get_best_atom(atom)
use_data[atom] = spm.get_package_useflags(matched_atom)
return True, use_data
@@ -272,15 +273,16 @@ class Base:
return False,'no item in queue'
use_data = {}
spm = self.SystemManagerExecutor.SystemInterface.Entropy.Spm()
for atom in atoms:
try:
status = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.disable_package_useflags(atom, useflags)
status = spm.disable_package_useflags(atom, useflags)
except:
continue
if status:
use_data[atom] = {}
matched_atom = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_best_atom(atom)
use_data[atom] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_package_useflags(matched_atom)
matched_atom = spm.get_best_atom(atom)
use_data[atom] = spm.get_package_useflags(matched_atom)
return True, use_data
@@ -291,6 +293,7 @@ class Base:
return False,'no item in queue'
atoms_data = {}
spm = self.SystemManagerExecutor.SystemInterface.Entropy.Spm()
for atom in atoms:
try:
@@ -298,7 +301,7 @@ class Base:
category = key.split("/")[0]
except:
continue
matched_atom = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_best_atom(atom)
matched_atom = spm.get_best_atom(atom)
if not matched_atom: continue
if not atoms_data.has_key(category):
@@ -314,7 +317,8 @@ class Base:
if queue_data == None:
return False,'no item in queue'
packages = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_available_packages(categories)
spm = self.SystemManagerExecutor.SystemInterface.Entropy.Spm()
packages = spm.get_available_packages(categories)
package_data = {}
for package in packages:
try:
@@ -334,7 +338,8 @@ class Base:
if queue_data == None:
return False,'no item in queue'
packages, pkg_len = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_installed_packages(categories = categories)
spm = self.SystemManagerExecutor.SystemInterface.Entropy.Spm()
packages, pkg_len = spm.get_installed_packages(categories = categories)
package_data = {}
for package in packages:
try:
@@ -972,10 +977,11 @@ class Base:
return False,'no item in queue'
data = {}
glsa_ids = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.list_glsa_packages(list_type)
spm = self.SystemManagerExecutor.SystemInterface.Entropy.Spm()
glsa_ids = spm.list_glsa_packages(list_type)
if not glsa_ids: return False,data
for myid in glsa_ids:
data[myid] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_glsa_id_information(myid)
data[myid] = spm.get_glsa_id_information(myid)
return True,data
def get_notice_board(self, queue_id, repoid):
@@ -1149,23 +1155,24 @@ class Base:
data = {}
data['atom'] = matched_atom
data['key'] = self.entropyTools.dep_getkey(matched_atom)
spm = self.SystemManagerExecutor.SystemInterface.Entropy.Spm()
try:
if from_installed:
data['slot'] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_installed_package_slot(matched_atom)
portage_matched_atom = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_best_atom("%s:%s" % (data['key'],data['slot'],))
data['slot'] = spm.get_installed_package_slot(matched_atom)
portage_matched_atom = spm.get_best_atom("%s:%s" % (data['key'],data['slot'],))
# get installed package description
data['available_atom'] = portage_matched_atom
if portage_matched_atom:
data['use'] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_package_useflags(portage_matched_atom)
data['use'] = spm.get_package_useflags(portage_matched_atom)
else:
# get use flags of the installed package
data['use'] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_installed_package_useflags(matched_atom)
data['description'] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_installed_package_description(matched_atom)
data['use'] = spm.get_installed_package_useflags(matched_atom)
data['description'] = spm.get_installed_package_description(matched_atom)
else:
data['slot'] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_package_slot(matched_atom)
data['use'] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_package_useflags(matched_atom)
data['installed_atom'] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_installed_atom("%s:%s" % (data['key'],data['slot'],))
data['description'] = self.SystemManagerExecutor.SystemInterface.Entropy.SpmService.get_package_description(matched_atom)
data['slot'] = spm.get_package_slot(matched_atom)
data['use'] = spm.get_package_useflags(matched_atom)
data['installed_atom'] = spm.get_installed_atom("%s:%s" % (data['key'],data['slot'],))
data['description'] = spm.get_package_description(matched_atom)
except KeyError:
pass

View File

@@ -298,7 +298,7 @@ def update(options):
if repackageItems:
appdb = Entropy.SpmService.get_vdb_path()
appdb = Entropy.Spm().get_vdb_path()
packages = []
dbconn = Entropy.open_server_repository(read_only = True, no_upload = True)
@@ -333,7 +333,7 @@ def update(options):
if myatom in tba:
tb_added_new.add(tba.get(myatom))
continue
inst_myatom = Entropy.SpmService.get_installed_atom(myatom)
inst_myatom = Entropy.Spm().get_installed_atom(myatom)
if inst_myatom in tba:
tb_added_new.add(tba.get(inst_myatom))
toBeAdded = tb_added_new
@@ -727,7 +727,7 @@ def spm(options):
def spm_compile_categories(options, do_list = False):
categories = sorted(set(options))
packages = Entropy.SpmService.get_available_packages(categories)
packages = Entropy.Spm().get_available_packages(categories)
packages = sorted(packages)
if do_list:
print ' '.join(["="+x for x in packages])
@@ -747,7 +747,7 @@ def spm_compile_pkgset(pkgsets, do_rebuild = False, do_dbupdate = False,
return 1
# filter available sets
avail_sets = Entropy.SpmService.get_sets(False)
avail_sets = Entropy.Spm().get_sets(False)
avail_pkgsets = dict(((x,avail_sets.get(x),) for x in pkgsets \
if x in avail_sets))
for pkgset in pkgsets:
@@ -769,13 +769,13 @@ def spm_compile_pkgset(pkgsets, do_rebuild = False, do_dbupdate = False,
# expand package sets
for pkgset in pkgsets:
set_pkgs = [str(x) for x in Entropy.SpmService.get_set_atoms(pkgset)]
set_atoms = [Entropy.SpmService.get_best_atom(x) for x in set_pkgs]
set_pkgs = [str(x) for x in Entropy.Spm().get_set_atoms(pkgset)]
set_atoms = [Entropy.Spm().get_best_atom(x) for x in set_pkgs]
set_atoms = [x for x in set_atoms if x != None]
if not do_rebuild:
set_atoms = [x for x in set_atoms if not \
Entropy.SpmService.get_installed_atom(x)]
Entropy.Spm().get_installed_atom(x)]
set_atoms = ["="+x for x in set_atoms]
if not set_atoms:
continue