Author: lslezak
Date: Tue Jul 19 20:43:00 2011
New Revision: 64903
URL: http://svn.opensuse.org/viewcvs/yast?rev=64903&view=rev
Log:
backport from SP2 branch:
- added Pkg::Add/RemoveUpgradeRepo() and Pkg::GetUpgradeRepos()
(fate#311994)
Modified:
branches/SuSE-Code-11-SP1-Branch/pkg-bindings/ (props changed)
branches/SuSE-Code-11-SP1-Branch/pkg-bindings/package/yast2-pkg-bindings.changes
branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/Package.cc
branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/PkgFunctions.h
Modified: branches/SuSE-Code-11-SP1-Branch/pkg-bindings/package/yast2-pkg-bindings.changes
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP1-Branch/pkg-bindings/package/yast2-pkg-bindings.changes?rev=64903&r1=64902&r2=64903&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP1-Branch/pkg-bindings/package/yast2-pkg-bindings.changes (original)
+++ branches/SuSE-Code-11-SP1-Branch/pkg-bindings/package/yast2-pkg-bindings.changes Tue Jul 19 20:43:00 2011
@@ -1,5 +1,6 @@
-------------------------------------------------------------------
+- added Pkg::Add/RemoveUpgradeRepo() and Pkg::GetUpgradeRepos()
- added Pkg::CommitPolicy()
- support for download in advance mode in yast2-wagon (fate#308951)
- added Pkg::Commit() function which accepts commit options map
Modified: branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/Package.cc
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/Package.cc?rev=64903&r1=64902&r2=64903&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/Package.cc (original)
+++ branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/Package.cc Tue Jul 19 20:43:00 2011
@@ -2346,6 +2346,101 @@
return ret;
}
+/*
+ Helper function for adding/removing an upgrade repository
+*/
+YCPValue PkgFunctions::AddRemoveUpgradeRepo(const YCPInteger &repo, bool add)
+{
+ if (repo.isNull())
+ {
+ y2error("Passed nil paramter");
+ _last_error.setLastError("Used 'nil' repository ID for upgrade");
+ return YCPBoolean(false);
+ }
+
+ long long repo_id = repo->value();
+ YRepo_Ptr r = logFindRepository(repo_id);
+ if (!r)
+ {
+ y2error("Invalid repository ID %lld", repo_id);
+ _last_error.setLastError("Invalid repository ID " + repo->toString());
+ return YCPBoolean(false);
+ }
+
+ zypp::Repository repository(zypp::ResPool::instance().reposFind(r->repoInfo().alias()));
+
+ if (repository == zypp::Repository::noRepository)
+ {
+ y2error("Invalid repository ID %lld", repo_id);
+ _last_error.setLastError("Invalid repository ID " + repo->toString());
+ return YCPBoolean(false);
+ }
+
+ if (add)
+ {
+ y2milestone("Adding upgrade repo %lld", repo_id);
+ zypp_ptr()->resolver()->addUpgradeRepo(repository);
+ }
+ else
+ {
+ y2milestone("Removing upgrade repo %lld", repo_id);
+ zypp_ptr()->resolver()->removeUpgradeRepo(repository);
+ }
+
+ return YCPBoolean(true);
+}
+
+/**
+ @builtin AddUpgradeRepo
+
+ @short Add upgrade repository for distribution upgrade
+ @return boolean true on success
+*/
+YCPValue PkgFunctions::AddUpgradeRepo(const YCPInteger &repo)
+{
+ return AddRemoveUpgradeRepo(repo, true);
+}
+
+/**
+ @builtin RemoveUpgradeRepo
+
+ @short Remove a repository from upgrade list
+ @return boolean true on success
+*/
+YCPValue PkgFunctions::RemoveUpgradeRepo(const YCPInteger &repo)
+{
+ return AddRemoveUpgradeRepo(repo, false);
+}
+
+/**
+ @builtin GetUpgradeRepos
+
+ @short Get list of current upgrade repositories
+ @return list<integer> all current upgrade repositories
+*/
+YCPValue PkgFunctions::GetUpgradeRepos()
+{
+ YCPList ret;
+
+ unsigned long index = 0;
+ for_(it, repos.begin(), repos.end())
+ {
+ if (!(*it)->isDeleted())
+ {
+ zypp::Repository repository(zypp::ResPool::instance().reposFind((*it)->repoInfo().alias()));
+ if (zypp_ptr()->resolver()->upgradingRepo(repository))
+ {
+ ret->add(YCPInteger(index));
+ }
+ }
+ index++;
+ }
+
+ std::string result(ret->toString());
+ y2milestone("Current upgrade repos: %s", result.c_str());
+ return ret;
+}
+
/**
@builtin GetBackupPath
Modified: branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/PkgFunctions.h
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/PkgFunctions.h?rev=64903&r1=64902&r2=64903&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/PkgFunctions.h (original)
+++ branches/SuSE-Code-11-SP1-Branch/pkg-bindings/src/PkgFunctions.h Tue Jul 19 20:43:00 2011
@@ -232,6 +232,10 @@
YCPValue SourceProvideFileCommon(const YCPInteger &id, const YCPInteger &mid,
const YCPString& f, const bool optional, const bool check_signatures,
const bool digested);
+
+ // a helper function to add or remove an upgrade repository
+ YCPValue AddRemoveUpgradeRepo(const YCPInteger &repo, bool add);
+
public:
// general
/* TYPEINFO: void() */
@@ -716,6 +720,12 @@
YCPValue Commit (const YCPMap& config);
/* TYPEINFO: map