Hello community,
here is the log from the commit of package openstack-nova for openSUSE:Factory checked in at 2012-11-15 09:43:19
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/openstack-nova (Old)
and /work/SRC/openSUSE:Factory/.openstack-nova.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "openstack-nova", Maintainer is "CThiel@suse.com"
Changes:
--------
New Changes file:
--- /dev/null 2012-10-22 00:44:18.403455820 +0200
+++ /work/SRC/openSUSE:Factory/.openstack-nova.new/openstack-nova-doc.changes 2012-11-15 09:43:20.000000000 +0100
@@ -0,0 +1,23 @@
+-------------------------------------------------------------------
+Thu Nov 8 13:26:09 UTC 2012 - saschpe@suse.de
+
+- Drop from_vcs build flag
+
+-------------------------------------------------------------------
+Wed Jun 27 12:39:11 UTC 2012 - saschpe@suse.de
+
+- Change versioning scheme to $release+git.$AUTHORDATE.$COMMITREV
+- Simplify from_vcs macros
+
+-------------------------------------------------------------------
+Wed Jun 27 10:13:39 CEST 2012 - vuntz@suse.com
+
+- Sync version to the version we currently have, to fix build.
+- Add jsonutils-fix-new-anyjson.patch: fix nova.utils to be
+ compatibly with the version of python-anyjson we use
+ (lp#1017765).
+
+-------------------------------------------------------------------
+Mon Jun 25 09:33:07 UTC 2012 - saschpe@suse.de
+
+- Initial version
--- /work/SRC/openSUSE:Factory/openstack-nova/openstack-nova.changes 2012-01-31 10:21:25.000000000 +0100
+++ /work/SRC/openSUSE:Factory/.openstack-nova.new/openstack-nova.changes 2012-11-15 09:43:20.000000000 +0100
@@ -2 +2 @@
-Mon Jan 30 13:21:37 UTC 2012 - prusnak@opensuse.org
+Thu Nov 8 13:26:02 UTC 2012 - saschpe@suse.de
@@ -4 +4 @@
-- drop aoetools from Requires, not needed
+- Drop from_vcs build flag
@@ -7 +7 @@
-Wed Jan 25 10:37:41 UTC 2012 - bwiedemann@suse.com
+Tue Nov 6 10:48:22 UTC 2012 - saschpe@suse.de
@@ -9,2 +9,447 @@
-- Require lowercase python names to compile for older versions
-- openstack-nova-network requires dnsmasq
+- Correctly apply last patch
+
+-------------------------------------------------------------------
+Wed Oct 31 09:39:19 UTC 2012 - mbarringer@suse.com
+
+- Added nova-bnc-780982-fix.patch: boot from volume not possible
+ from dashboard (bnc#780982)
+
+-------------------------------------------------------------------
+Mon Oct 1 13:19:37 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (d1d5d6d):
+ + Use bare container format by default
+ + fix cleanup_file_locks with restricted permissions
+ + make ensure_default_security_group() call sgh
+ + fix unmounting of LXC containers in the presence of symlinks
+
+-------------------------------------------------------------------
+Wed Sep 26 13:14:32 UTC 2012 - vuntz@suse.com
+
+- Add nova-volume-list-all_tenants.patch: do not list volumes from
+ all tenants by default for admins. Fixes several issues,
+ including a crash in horizon. Fix bnc#782289.
+
+-------------------------------------------------------------------
+Wed Sep 26 09:03:20 UTC 2012 - bwiedemann@suse.com
+
+- rename nova-filter-FORWARD-sitelocal firewall rule
+ to remain below the 28 character limit (bnc#781800)
+- make init script wait for postgresql (bnc#781798)
+
+-------------------------------------------------------------------
+Tue Sep 25 11:54:07 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (47dabb3):
+ + Yield to another greenthread when some time-consuming task finished.
+
+-------------------------------------------------------------------
+Thu Sep 20 12:04:33 UTC 2012 - bwiedemann@suse.com
+
+- add polkit-1 rule to allow libvirt access by nova-compute
+
+-------------------------------------------------------------------
+Sun Sep 16 18:20:56 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (2e75689):
+ + Make flavorextradata ignore deleted flavors.
+ + Ensure hairpin_mode is set whenever vifs is added to bridge.
+ + Fix simple_tenant_usage's handing of future end times
+ + Redefine the domain's XML on volume attach/detach
+
+-------------------------------------------------------------------
+Wed Sep 12 11:08:11 UTC 2012 - vuntz@suse.com
+
+- Do not use a sed to modify /usr/bin/gensslcert in %post: this
+ file belongs to another package, and we actually don't do any
+ change with the sed... Fix bnc#779747.
+
+-------------------------------------------------------------------
+Wed Aug 29 13:33:08 UTC 2012 - bwiedemann@suse.com
+
+- fix nova-network init script patch (bnc#777488)
+
+-------------------------------------------------------------------
+Tue Aug 28 18:23:41 UTC 2012 - bwiedemann@suse.com
+
+- add firewall rules to reject traffic
+ to the admin and storage networks (bnc#777488)
+
+-------------------------------------------------------------------
+Tue Aug 28 15:06:09 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (4d2a4af):
+ + Makes sure instance deletion ok with deleted data
+ + Add error log for live migration.
+
+-------------------------------------------------------------------
+Thu Aug 23 09:06:24 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (86fb736):
+ + Fix exception handling in libvirt attach_volume()
+
+-------------------------------------------------------------------
+Thu Aug 23 07:22:10 UTC 2012 - vuntz@suse.com
+
+- Add nova-glance-ssl.patch: make nova work with ssl-enabled
+ glance. Part of bnc#776909.
+
+-------------------------------------------------------------------
+Tue Aug 21 22:04:18 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (272b98d):
+ + Restore libvirt block storage connections on reboot.
+ + fix unmounting of LXC containers
+
+-------------------------------------------------------------------
+Tue Aug 21 15:55:56 UTC 2012 - jdsn@suse.de
+
+- let nova compute init script depend on libvirtd (bnc#776763)
+
+-------------------------------------------------------------------
+Fri Aug 10 22:06:20 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (63dd6be):
+ + Final versioning for 2012.1.2
+ + Bump version to 2012.1.3
+
+-------------------------------------------------------------------
+Wed Aug 8 16:12:00 MDT 2012 - jfehlig@suse.com
+
+- Upstream has standardized on vm_mode values, see commit eb074328.
+ Update nova-xen.patch to conform to the standard.
+
+-------------------------------------------------------------------
+Wed Aug 8 14:09:27 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (d4c7f6f):
+ + fix the qpid_heartbeat option so that it's effective
+ + Drop AES functions and pycrypto dependency
+
+-------------------------------------------------------------------
+Tue Aug 7 22:04:19 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (d9577ce):
+ + Prohibit file injection writing to host filesystem
+
+-------------------------------------------------------------------
+Wed Aug 1 14:28:38 UTC 2012 - vuntz@suse.com
+
+- Split nova-cert service in openstack-nova-cert subpackage. Needed
+ for bnc#773188.
+
+-------------------------------------------------------------------
+Tue Jul 31 22:10:52 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (6c05f43):
+ + Adding networking rules to vm's on compute service startup
+ + use boto's HTTPResponse class for versions of boto >=2.5.2
+ + Convert remaining network API casts to calls
+ + Moving where the fixed ip deallocation happens.
+ + ensure libguestfs mounts are cleaned up
+
+-------------------------------------------------------------------
+Tue Jul 31 16:00:26 CEST 2012 - iartarisi@suse.cz
+
+- remove nova-boto-httpresponse.patch which has been merged upstream:
+https://review.openstack.org/#/c/10209/
+
+-------------------------------------------------------------------
+Tue Jul 31 09:12:09 UTC 2012 - saschpe@suse.de
+
+- Provide nova-api WSGI skeleton
+
+-------------------------------------------------------------------
+Mon Jul 30 14:25:25 UTC 2012 - saschpe@suse.de
+
+- Provide self-signed SSL certificates to be used for non-production setups
+ (like openstack-quickstart)
+
+-------------------------------------------------------------------
+Mon Jul 30 14:21:23 UTC 2012 - saschpe@suse.de
+
+- Drop useless BuildRequires: bpython
+
+-------------------------------------------------------------------
+Sat Jul 28 08:26:40 UTC 2012 - jenkins@suse.de
+
+- Update to latest git (b68e9c6):
+ + Handle local & remote exceptions consistently.
+ + Fix wrong regex in cleanup_file_locks.
+
+-------------------------------------------------------------------
+Sat Jul 28 08:13:28 UTC 2012 - cthiel@suse.com
+
+- remove rpc-exceptions-9b3e0b6d.patch which has been merged upstream:
+ https://review.openstack.org/#/c/9534/
+- refresh all patches, to apply without fuzz
+
+-------------------------------------------------------------------
+Wed Jul 25 07:19:11 UTC 2012 - cthiel@suse.com
+
+- add 5b85997e-power_state.patch, based on
+ https://review.openstack.org/#/c/10266/, to clean up power state handling in
+ nova
+
+-------------------------------------------------------------------
++++ 261 more lines (skipped)
++++ between /work/SRC/openSUSE:Factory/openstack-nova/openstack-nova.changes
++++ and /work/SRC/openSUSE:Factory/.openstack-nova.new/openstack-nova.changes
Old:
----
api-paste.ini
bug-740183_vuln.patch
noVNC.tar.gz
nova-2011.3-create_lock_dir.patch
nova-2011.3.tar.gz
New:
----
5b85997e-power_state.patch
_service
disable-intersphinx.patch
jsonutils-fix-new-anyjson.patch
nova-2012.1+git.1348669189.d1d5d6d.tar.gz
nova-bnc-780982-fix.patch
nova-glance-ssl.patch
nova-network-filter-bnc777488.patch
nova-rbd-use-local-devices.patch
nova-volume-list-all_tenants.patch
nova-xen.patch
openstack-nova-api.wsgi
openstack-nova-doc.changes
openstack-nova-doc.spec
openstack-nova-manage.sh
openstack-nova-network-init-bnc777488.patch
openstack-nova-vncproxy.init
org.openstack.nova.compute.pkla
rpmlintrc
show
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ openstack-nova-doc.spec ++++++
#
# spec file for package openstack-nova-doc
#
# Copyright (c) 2012 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
%define component nova
Name: openstack-%{component}-doc
Version: 2012.1+git.1348669189.d1d5d6d
Release: 0
Summary: Documentation for OpenStack Nova
License: Apache-2.0
Group: Documentation/HTML
Url: http://openstack.org/projects/compute/
Source: %{component}-%{version}.tar.gz
# PATCH-FIX-OPENSUSE: To build in OBS without internet access
# the intersphinx module connects to the internet and tries to link to
# other existing sphinx documentation for external modules. We obviously
# don't want to connect to the internet during package build.
Patch0: disable-intersphinx.patch
# PATCH-FIX-UPSTREAM jsonutils-fix-new-anyjson.patch lp#1017765 vuntz@suse.com -- Fix compatibility with new python-anyjson
Patch1: jsonutils-fix-new-anyjson.patch
BuildRequires: graphviz
BuildRequires: libvirt-python
BuildRequires: python-PasteDeploy
BuildRequires: python-Sphinx
BuildRequires: python-devel
BuildRequires: python-glance
# For nova.rpc.impl_kombu:
BuildRequires: python-kombu
# For nova.network.ldapdns:
BuildRequires: python-ldap
BuildRequires: python-lxml
BuildRequires: python-nova
BuildRequires: python-novaclient
# For api.volume.san:
BuildRequires: python-paramiko
BuildRequires: python-pycrypto
BuildRequires: python-suds
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
Nova is a cloud computing fabric controller (the main part of an IaaS
system) built to match the popular AWS EC2 and S3 APIs. It is written
in Python, using the Tornado and Twisted frameworks, and relies on the
standard AMQP messaging protocol.
This package contains documentation files for openstack-nova.
%prep
%setup -q -n %{component}-%{version}
%patch0 -p1
%patch1 -p1
# Avoid usage of 'git' to generate timestamps:
sed -i "s|html_last_updated_fmt = .*|html_last_updated_fmt = '%{version}'|" doc/source/conf.py
%build
python setup.py build_sphinx
rm -rf doc/build/html/.buildinfo # Remove unneeded files
%install
%files
%defattr(-,root,root,-)
%doc LICENSE doc/build/html
%changelog
++++++ openstack-nova.spec ++++++
++++ 760 lines (skipped)
++++ between /work/SRC/openSUSE:Factory/openstack-nova/openstack-nova.spec
++++ and /work/SRC/openSUSE:Factory/.openstack-nova.new/openstack-nova.spec
++++++ 5b85997e-power_state.patch ++++++
commit 0f0970ec46587c7d41bf673c80038a4a30052a33
Author: Yun Mao
Date: Thu May 24 21:51:57 2012 -0400
cleanup power state (partially implements bp task-management)
Removed duplicate and invalid state in power_state:
FAILED, SHUTOFF, BLOCKED
This is the first step in cleaning up nova state machine
and do better task management (bp/task-management)
http://wiki.openstack.org/VMState
Change-Id: I586b9058fada5efd468870fb187590fc0e37aa8f
(cherry picked from commit 5b85997e33aa749ece94edebaaefefe71b899561)
Index: nova-2012.1+git.1343445424.b68e9c6/nova/compute/manager.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/compute/manager.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/compute/manager.py
@@ -273,7 +273,7 @@ class ComputeManager(manager.SchedulerDe
try:
return self.driver.get_info(instance)["state"]
except exception.NotFound:
- return power_state.FAILED
+ return power_state.NOSTATE
def get_console_topic(self, context, **kwargs):
"""Retrieves the console host for a project on this host.
@@ -2372,7 +2372,6 @@ class ComputeManager(manager.SchedulerDe
continue
if (vm_power_state in (power_state.NOSTATE,
- power_state.SHUTOFF,
power_state.SHUTDOWN,
power_state.CRASHED)
and db_instance['vm_state'] == vm_states.ACTIVE):
Index: nova-2012.1+git.1343445424.b68e9c6/nova/compute/power_state.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/compute/power_state.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/compute/power_state.py
@@ -18,18 +18,26 @@
# License for the specific language governing permissions and limitations
# under the License.
-"""The various power states that a VM can be in."""
+"""Power state is the state we get by calling virt driver on a particular
+domain. The hypervisor is always considered the authority on the status
+of a particular VM, and the power_state in the DB should be viewed as a
+snapshot of the VMs's state in the (recent) past. It can be periodically
+updated, and should also be updated at the end of a task if the task is
+supposed to affect power_state.
+"""
-#NOTE(justinsb): These are the virDomainState values from libvirt
+# NOTE(maoy): These are *not* virDomainState values from libvirt.
+# The hex value happens to match virDomainState for backward-compatibility
+# reasons.
NOSTATE = 0x00
RUNNING = 0x01
-BLOCKED = 0x02
PAUSED = 0x03
-SHUTDOWN = 0x04
-SHUTOFF = 0x05
+SHUTDOWN = 0x04 # the VM is powered off
CRASHED = 0x06
SUSPENDED = 0x07
-FAILED = 0x08
+
+# TODO(maoy): BUILDING state is only used in bare metal case and should
+# eventually be removed/cleaned up. NOSTATE is probably enough.
BUILDING = 0x09
# TODO(justinsb): Power state really needs to be a proper class,
@@ -38,13 +46,10 @@ BUILDING = 0x09
_STATE_MAP = {
NOSTATE: 'pending',
RUNNING: 'running',
- BLOCKED: 'blocked',
PAUSED: 'paused',
SHUTDOWN: 'shutdown',
- SHUTOFF: 'shutdown',
CRASHED: 'crashed',
SUSPENDED: 'suspended',
- FAILED: 'failed to spawn',
BUILDING: 'building',
}
Index: nova-2012.1+git.1343445424.b68e9c6/nova/tests/baremetal/test_proxy_bare_metal.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/tests/baremetal/test_proxy_bare_metal.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/tests/baremetal/test_proxy_bare_metal.py
@@ -174,18 +174,14 @@ class BareMetalDomTestCase(test.TestCase
"""Check to see that all entries in the domain list are removed
except for the one that is in the running state"""
- fake_file = StringIO.StringIO()
-
domains = [dict(node_id=1, name='i-00000001',
status=power_state.NOSTATE),
dict(node_id=2, name='i-00000002', status=power_state.RUNNING),
- dict(node_id=3, name='i-00000003', status=power_state.BLOCKED),
- dict(node_id=4, name='i-00000004', status=power_state.PAUSED),
- dict(node_id=5, name='i-00000005', status=power_state.SHUTDOWN),
- dict(node_id=6, name='i-00000006', status=power_state.SHUTOFF),
- dict(node_id=7, name='i-00000007', status=power_state.CRASHED),
- dict(node_id=8, name='i-00000008', status=power_state.SUSPENDED),
- dict(node_id=9, name='i-00000009', status=power_state.FAILED)]
+ dict(node_id=3, name='i-00000003', status=power_state.PAUSED),
+ dict(node_id=5, name='i-00000004', status=power_state.SHUTDOWN),
+ dict(node_id=7, name='i-00000005', status=power_state.CRASHED),
+ dict(node_id=8, name='i-00000006', status=power_state.SUSPENDED),
+ dict(node_id=9, name='i-00000007', status=power_state.NOSTATE)]
# Create the mock objects
self.mox.StubOutWithMock(dom, 'read_domains')
Index: nova-2012.1+git.1343445424.b68e9c6/nova/tests/test_libvirt.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/tests/test_libvirt.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/tests/test_libvirt.py
@@ -2419,7 +2419,7 @@ class LibvirtConnectionTestCase(test.Tes
elif instance['name'] == "running":
return {'state': power_state.RUNNING}
else:
- return {'state': power_state.SHUTOFF}
+ return {'state': power_state.SHUTDOWN}
self.stubs.Set(self.libvirtconnection, 'get_info',
fake_get_info)
Index: nova-2012.1+git.1343445424.b68e9c6/nova/virt/libvirt/connection.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/virt/libvirt/connection.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/virt/libvirt/connection.py
@@ -47,7 +47,6 @@ import multiprocessing
import os
import shutil
import sys
-import time
import uuid
from eventlet import greenthread
@@ -190,6 +189,34 @@ def patch_tpool_proxy():
patch_tpool_proxy()
+VIR_DOMAIN_NOSTATE = 0
+VIR_DOMAIN_RUNNING = 1
+VIR_DOMAIN_BLOCKED = 2
+VIR_DOMAIN_PAUSED = 3
+VIR_DOMAIN_SHUTDOWN = 4
+VIR_DOMAIN_SHUTOFF = 5
+VIR_DOMAIN_CRASHED = 6
+VIR_DOMAIN_PMSUSPENDED = 7
+
+LIBVIRT_POWER_STATE = {
+ VIR_DOMAIN_NOSTATE: power_state.NOSTATE,
+ VIR_DOMAIN_RUNNING: power_state.RUNNING,
+ # NOTE(maoy): The DOMAIN_BLOCKED state is only valid in Xen.
+ # It means that the VM is running and the vCPU is idle. So,
+ # we map it to RUNNING
+ VIR_DOMAIN_BLOCKED: power_state.RUNNING,
+ VIR_DOMAIN_PAUSED: power_state.PAUSED,
+ # NOTE(maoy): The libvirt API doc says that DOMAIN_SHUTDOWN
+ # means the domain is being shut down. So technically the domain
+ # is still running. SHUTOFF is the real powered off state.
+ # But we will map both to SHUTDOWN anyway.
+ # http://libvirt.org/html/libvirt-libvirt.html
+ VIR_DOMAIN_SHUTDOWN: power_state.SHUTDOWN,
+ VIR_DOMAIN_SHUTOFF: power_state.SHUTDOWN,
+ VIR_DOMAIN_CRASHED: power_state.CRASHED,
+ VIR_DOMAIN_PMSUSPENDED: power_state.SUSPENDED,
+}
+
def get_connection(read_only):
# These are loaded late so that there's no need to install these
@@ -369,6 +396,8 @@ class LibvirtConnection(driver.ComputeDr
# puTime: the time used by the domain in nanoseconds
(state, _max_mem, _mem, _num_cpu, _cpu_time) = domain.info()
+ state = LIBVIRT_POWER_STATE[state]
+
name = domain.name()
return driver.InstanceInfo(name, state)
@@ -411,7 +440,8 @@ class LibvirtConnection(driver.ComputeDr
# Code=55 Error=Requested operation is not valid:
# domain is not running
(state, _max_mem, _mem, _cpus, _t) = virt_dom.info()
- if state == power_state.SHUTOFF:
+ state = LIBVIRT_POWER_STATE[state]
+ if state == power_state.SHUTDOWN:
is_okay = True
if not is_okay:
@@ -689,6 +719,8 @@ class LibvirtConnection(driver.ComputeDr
snapshot_name = uuid.uuid4().hex
(state, _max_mem, _mem, _cpus, _t) = virt_dom.info()
+ state = LIBVIRT_POWER_STATE[state]
+
if state == power_state.RUNNING:
virt_dom.managedSave(0)
# Make the snapshot
@@ -740,6 +772,7 @@ class LibvirtConnection(driver.ComputeDr
"""
dom = self._lookup_by_name(instance.name)
(state, _max_mem, _mem, _cpus, _t) = dom.info()
+ state = LIBVIRT_POWER_STATE[state]
# NOTE(vish): This check allows us to reboot an instance that
# is already shutdown.
if state == power_state.RUNNING:
@@ -749,8 +782,9 @@ class LibvirtConnection(driver.ComputeDr
# call takes to return.
for x in xrange(FLAGS.libvirt_wait_soft_reboot_seconds):
(state, _max_mem, _mem, _cpus, _t) = dom.info()
+ state = LIBVIRT_POWER_STATE[state]
+
if state in [power_state.SHUTDOWN,
- power_state.SHUTOFF,
power_state.CRASHED]:
LOG.info(_("Instance shutdown successfully."),
instance=instance)
@@ -1596,7 +1630,7 @@ class LibvirtConnection(driver.ComputeDr
"""
virt_dom = self._lookup_by_name(instance['name'])
(state, max_mem, mem, num_cpu, cpu_time) = virt_dom.info()
- return {'state': state,
+ return {'state': LIBVIRT_POWER_STATE[state],
'max_mem': max_mem,
'mem': mem,
'num_cpu': num_cpu,
++++++ _service ++++++
<services>
<service name="tar_scm" mode="disabled">
<param name="url">git://github.com/openstack/nova.git</param>
<param name="scm">git</param>
<param name="exclude">.git</param>
<param name="exclude">.gitreview</param>
<param name="version">git-stable</param>
<param name="versionformat">2012.1+git.%ct.%h</param>
<!-- Comment this if you want the latest git master. -->
<param name="revision">stable/essex</param>
</service>
<service name="recompress" mode="disabled">
<param name="file">nova-*git*.tar</param>
<param name="compression">gz</param>
</service>
<service name="set_version" mode="disabled">
<param name="basename">nova</param>
</service>
</services>
++++++ disable-intersphinx.patch ++++++
Index: nova-git-2012.1.1335911344.master.e5e890f/doc/source/conf.py
===================================================================
--- nova-git-2012.1.1335911344.master.e5e890f.orig/doc/source/conf.py
+++ nova-git-2012.1.1335911344.master.e5e890f/doc/source/conf.py
@@ -25,7 +25,7 @@ sys.path.insert(0, os.path.abspath('./')
# Add any Sphinx extension module names here, as strings. They can be extensions
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.intersphinx', 'ext.nova_todo', 'sphinx.ext.coverage', 'sphinx.ext.pngmath', 'sphinx.ext.ifconfig','sphinx.ext.graphviz']
+extensions = ['sphinx.ext.autodoc', 'ext.nova_todo', 'sphinx.ext.coverage', 'sphinx.ext.pngmath', 'sphinx.ext.ifconfig','sphinx.ext.graphviz']
# autodoc generation is a bit aggressive and a nuisance when doing heavy text edit cycles.
# execute "export SPHINX_DEBUG=1" in your terminal to disable
++++++ jsonutils-fix-new-anyjson.patch ++++++
Compatibility with recent version of python-anyjson.
https://code.launchpad.net/bugs/1017765
https://review.openstack.org/#/c/9013/
Index: nova-2012.1+git.1343445424.b68e9c6/nova/utils.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/utils.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/utils.py
@@ -830,13 +830,17 @@ def loads(s):
return json.loads(s)
+def load(s):
+ return json.load(s)
+
+
try:
import anyjson
except ImportError:
pass
else:
anyjson._modules.append(("nova.utils", "dumps", TypeError,
- "loads", ValueError))
+ "loads", ValueError, 'load'))
anyjson.force_implementation("nova.utils")
++++++ nova-bnc-780982-fix.patch ++++++
--- nova-2012.1+git.1348669189.d1d5d6d/nova/compute/api.py 2012-10-01 11:22:47.000000000 +0200
+++ nova-2012.1+git.1348669189.d1d5d6d.patch/nova/compute/api.py 2012-10-31 10:31:01.000000000 +0100
@@ -497,6 +497,11 @@
continue
values['volume_size'] = size
+ if values['volume_size'] == "":
+ volume = self.volume_api.get(elevated_context,
+ values['volume_id'])
+ values['volume_size'] = volume['size']
+
# NOTE(yamahata): NoDevice eliminates devices defined in image
# files by command line option.
# (--block-device-mapping)
++++++ nova-glance-ssl.patch ++++++
From 76f27d28016926edea666360baae7d91887ff215 Mon Sep 17 00:00:00 2001
From: Vincent Untz
Date: Wed, 22 Aug 2012 13:36:39 +0200
Subject: [PATCH 1/2] Allow connecting to a ssl-based glance
This introduces a new glance_api_insecure setting that can be used to
not verify the certificate of the glance server against the certificate
authorities.
Change-Id: Ifafd6828e881f6d0584ec8c4fc678d0e29f455b7
---
etc/nova/nova.conf.sample | 4 +++-
nova/flags.py | 7 ++++++-
nova/image/glance.py | 39 ++++++++++++++++++++++++++-------------
3 files changed, 35 insertions(+), 15 deletions(-)
diff --git a/etc/nova/nova.conf.sample b/etc/nova/nova.conf.sample
index b2607a9..3406957 100644
--- a/etc/nova/nova.conf.sample
+++ b/etc/nova/nova.conf.sample
@@ -81,7 +81,7 @@
# firewall_driver="nova.virt.firewall.IptablesFirewallDriver"
###### (StrOpt) full class name for the DNS Manager for floating IPs
# floating_ip_dns_manager="nova.network.dns_driver.DNSDriver"
-###### (ListOpt) A list of the glance api servers available to nova ([hostname|ip]:port)
+###### (ListOpt) A list of the glance api servers available to nova. Prefix with https:// for ssl-based glance api servers. ([hostname|ip]:port)
# glance_api_servers="$glance_host:$glance_port"
###### (StrOpt) default glance hostname or ip
# glance_host="$my_ip"
@@ -89,6 +89,8 @@
# glance_num_retries=0
###### (IntOpt) default glance port
# glance_port=9292
+###### (BoolOpt) If passed, allow to perform insecure SSL (https) requests to glance
+# glance_api_insecure=false
###### (StrOpt) Name of this node. This can be an opaque identifier. It is not necessarily a hostname, FQDN, or IP address.
# host="nova"
###### (StrOpt) The service to use for retrieving and searching images.
diff --git a/nova/flags.py b/nova/flags.py
index 652d346..64efab8 100644
--- a/nova/flags.py
+++ b/nova/flags.py
@@ -155,8 +155,13 @@ global_opts = [
help='default glance port'),
cfg.ListOpt('glance_api_servers',
default=['$glance_host:$glance_port'],
- help='A list of the glance api servers available to nova '
+ help='A list of the glance api servers available to nova. '
+ 'Prefix with https:// for ssl-based glance api servers. '
'([hostname|ip]:port)'),
+ cfg.BoolOpt('glance_api_insecure',
+ default=False,
+ help='Allow to perform insecure SSL (https) requests to '
+ 'glance'),
cfg.IntOpt('glance_num_retries',
default=0,
help='Number retries when downloading an image from glance'),
diff --git a/nova/image/glance.py b/nova/image/glance.py
index 97a60cb..a48df2a 100644
--- a/nova/image/glance.py
+++ b/nova/image/glance.py
@@ -56,17 +56,20 @@ def _parse_image_ref(image_href):
port = o.port or 80
host = o.netloc.split(':', 1)[0]
image_id = o.path.split('/')[-1]
- return (image_id, host, port)
+ use_ssl = (o.scheme == 'https')
+ return (image_id, host, port, use_ssl)
-def _create_glance_client(context, host, port):
+def _create_glance_client(context, host, port, use_ssl):
if FLAGS.auth_strategy == 'keystone':
# NOTE(dprince): Glance client just needs auth_tok right? Should we
# add username and tenant to the creds below?
creds = {'strategy': 'keystone',
'username': context.user_id,
'tenant': context.project_id}
- glance_client = GlanceClient(host, port, auth_tok=context.auth_token,
+ glance_client = GlanceClient(host, port, use_ssl=use_ssl,
+ auth_tok=context.auth_token,
+ insecure=FLAGS.glance_api_insecure,
creds=creds)
else:
glance_client = GlanceClient(host, port)
@@ -82,10 +85,14 @@ def pick_glance_api_server():
Returns (host, port)
"""
- host_port = random.choice(FLAGS.glance_api_servers)
- host, port_str = host_port.split(':')
- port = int(port_str)
- return host, port
+ server = random.choice(FLAGS.glance_api_servers)
+ if server.find('//') == -1:
+ server = 'http://' + server
+ o = urlparse.urlparse(server)
+ port = o.port or 80
+ host = o.netloc.split(':', 1)[0]
+ use_ssl = (o.scheme == 'https')
+ return host, port, use_ssl
def get_glance_client(context, image_href):
@@ -100,21 +107,24 @@ def get_glance_client(context, image_href):
:returns: a tuple of the form (glance_client, image_id)
"""
- glance_host, glance_port = pick_glance_api_server()
+ glance_host, glance_port, use_ssl = pick_glance_api_server()
# check if this is an id
if '/' not in str(image_href):
glance_client = _create_glance_client(context,
glance_host,
- glance_port)
+ glance_port,
+ use_ssl)
return (glance_client, image_href)
else:
try:
- (image_id, glance_host, glance_port) = _parse_image_ref(image_href)
+ (image_id, glance_host, glance_port, use_ssl) = \
+ _parse_image_ref(image_href)
glance_client = _create_glance_client(context,
glance_host,
- glance_port)
+ glance_port,
+ use_ssl)
except ValueError:
raise exception.InvalidImageRef(image_href=image_href)
@@ -133,8 +143,11 @@ class GlanceImageService(object):
# is made to choose a new server each time via this property.
if self._client is not None:
return self._client
- glance_host, glance_port = pick_glance_api_server()
- return _create_glance_client(context, glance_host, glance_port)
+ glance_host, glance_port, use_ssl = pick_glance_api_server()
+ return _create_glance_client(context,
+ glance_host,
+ glance_port,
+ use_ssl)
def _call_retry(self, context, name, *args, **kwargs):
"""Retry call to glance server if there is a connection error.
--
1.7.10.4
From fa1fae756591b08a19793ffccfd162b44a14b748 Mon Sep 17 00:00:00 2001
From: Vincent Untz
Date: Wed, 22 Aug 2012 17:32:06 +0200
Subject: [PATCH 2/2] Fix xenapi for ssl-glance
Change-Id: I240cce05e7392a6d7cb67a26cf22d057f66fac8d
---
nova/virt/xenapi/vm_utils.py | 8 +++--
plugins/xenserver/xenapi/etc/xapi.d/plugins/glance | 31 +++++++++++++++-----
2 files changed, 30 insertions(+), 9 deletions(-)
diff --git a/nova/virt/xenapi/vm_utils.py b/nova/virt/xenapi/vm_utils.py
index a9a2670..8f19ceb 100644
--- a/nova/virt/xenapi/vm_utils.py
+++ b/nova/virt/xenapi/vm_utils.py
@@ -434,7 +434,8 @@ class VMHelper(xenapi.HelperBase):
LOG.debug(_("Asking xapi to upload %(vdi_uuids)s as"
" ID %(image_id)s") % locals())
- glance_host, glance_port = glance.pick_glance_api_server()
+ glance_host, glance_port, glance_use_ssl = \
+ glance.pick_glance_api_server()
properties = {}
properties['auto_disk_config'] = instance.auto_disk_config
@@ -444,6 +445,7 @@ class VMHelper(xenapi.HelperBase):
'image_id': image_id,
'glance_host': glance_host,
'glance_port': glance_port,
+ 'glance_use_ssl': glance_use_ssl,
'sr_path': cls.get_sr_path(session),
'auth_token': getattr(context, 'auth_token', None),
'properties': properties}
@@ -720,10 +722,12 @@ class VMHelper(xenapi.HelperBase):
max_attempts = FLAGS.glance_num_retries + 1
sleep_time = 0.5
for attempt_num in xrange(1, max_attempts + 1):
- glance_host, glance_port = glance.pick_glance_api_server()
+ glance_host, glance_port, glance_use_ssl = \
+ glance.pick_glance_api_server()
params = {'image_id': image,
'glance_host': glance_host,
'glance_port': glance_port,
+ 'glance_use_ssl': glance_use_ssl,
'uuid_stack': uuid_stack,
'sr_path': cls.get_sr_path(session),
'num_retries': 0,
diff --git a/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance b/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance
index 0020ad5..4a87ed6 100755
--- a/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance
+++ b/plugins/xenserver/xenapi/etc/xapi.d/plugins/glance
@@ -137,7 +137,8 @@ def _download_tarball_and_verify(request, staging_path):
logging.info(msg % locals())
-def _download_tarball(sr_path, image_id, glance_host, glance_port, auth_token):
+def _download_tarball(sr_path, image_id, glance_host, glance_port,
+ glance_use_ssl, auth_token):
"""Download the tarball image from Glance and extract it into the staging
area. Retry if there is any failure.
"""
@@ -146,7 +147,12 @@ def _download_tarball(sr_path, image_id, glance_host, glance_port, auth_token):
if auth_token:
headers['x-auth-token'] = auth_token
- url = "http://%(glance_host)s:%(glance_port)d/v1/images/"\
+ if glance_use_ssl:
+ scheme = 'https'
+ else:
+ scheme = 'http'
+
+ url = "%(scheme)s://%(glance_host)s:%(glance_port)d/v1/images/"\
"%(image_id)s" % locals()
logging.info("Downloading %s" % url)
@@ -349,14 +355,22 @@ def _prepare_staging_area_for_upload(sr_path, staging_path, vdi_uuids):
def _upload_tarball(staging_path, image_id, glance_host, glance_port,
- auth_token, properties):
+ glance_use_ssl, auth_token, properties):
"""
Create a tarball of the image and then stream that into Glance
using chunked-transfer-encoded HTTP.
"""
- url = 'http://%s:%s/v1/images/%s' % (glance_host, glance_port, image_id)
+ if glance_use_ssl:
+ scheme = 'https'
+ else:
+ scheme = 'http'
+ url = '%s://%s:%s/v1/images/%s' % (scheme, glance_host, glance_port,
+ image_id)
logging.info("Writing image data to %s" % url)
- conn = httplib.HTTPConnection(glance_host, glance_port)
+ if glance_use_ssl:
+ conn = httplib.HTTPSConnection(glance_host, glance_port)
+ else:
+ conn = httplib.HTTPConnection(glance_host, glance_port)
# NOTE(sirp): httplib under python2.4 won't accept a file-like object
# to request
@@ -520,6 +534,7 @@ def download_vhd(session, args):
image_id = params["image_id"]
glance_host = params["glance_host"]
glance_port = params["glance_port"]
+ glance_use_ssl = params["glance_use_ssl"]
uuid_stack = params["uuid_stack"]
sr_path = params["sr_path"]
auth_token = params["auth_token"]
@@ -527,7 +542,8 @@ def download_vhd(session, args):
staging_path = None
try:
staging_path = _download_tarball(sr_path, image_id, glance_host,
- glance_port, auth_token)
+ glance_port, glance_use_ssl,
+ auth_token)
# Right now, it's easier to return a single string via XenAPI,
# so we'll json encode the list of VHDs.
return json.dumps(_import_vhds(sr_path, staging_path, uuid_stack))
@@ -544,6 +560,7 @@ def upload_vhd(session, args):
image_id = params["image_id"]
glance_host = params["glance_host"]
glance_port = params["glance_port"]
+ glance_use_ssl = params["glance_use_ssl"]
sr_path = params["sr_path"]
auth_token = params["auth_token"]
properties = params["properties"]
@@ -552,7 +569,7 @@ def upload_vhd(session, args):
try:
_prepare_staging_area_for_upload(sr_path, staging_path, vdi_uuids)
_upload_tarball(staging_path, image_id, glance_host, glance_port,
- auth_token, properties)
+ glance_use_ssl, auth_token, properties)
finally:
_cleanup_staging_area(staging_path)
--
1.7.10.4
++++++ nova-network-filter-bnc777488.patch ++++++
Index: nova-2012.1+git.1345844892.4d2a4af/nova/network/linux_net.py
===================================================================
--- nova-2012.1+git.1345844892.4d2a4af.orig/nova/network/linux_net.py
+++ nova-2012.1+git.1345844892.4d2a4af/nova/network/linux_net.py
@@ -262,6 +262,9 @@ class IptablesManager(object):
# among the various nova components. It sits at the very top
# of FORWARD and OUTPUT.
for tables in [self.ipv4, self.ipv6]:
+ tables['filter'].add_chain('nova-filter-FORWARD-sitelocl', wrap=False)
+ tables['filter'].add_rule('FORWARD', '-j nova-filter-FORWARD-sitelocl', wrap=False, top=True)
+
tables['filter'].add_chain('nova-filter-top', wrap=False)
tables['filter'].add_rule('FORWARD', '-j nova-filter-top',
wrap=False, top=True)
Index: nova-2012.1+git.1345844892.4d2a4af/nova/tests/test_iptables_network.py
===================================================================
--- nova-2012.1+git.1345844892.4d2a4af.orig/nova/tests/test_iptables_network.py
+++ nova-2012.1+git.1345844892.4d2a4af/nova/tests/test_iptables_network.py
@@ -144,7 +144,15 @@ class IptablesManagerTestCase(test.TestC
"Duplicate line: %s" % line)
seen_lines.add(line)
- for chain in ['FORWARD', 'OUTPUT']:
+ for chain in ['FORWARD']:
+ for line in new_lines:
+ if line.startswith('-A %s' % chain):
+ self.assertTrue('-j nova-filter-FORWARD-sitelocl' in line,
+ "First %s rule does not "
+ "jump to nova-filter-FORWARD-sitelocl" % chain)
+ break
+
+ for chain in ['OUTPUT']:
for line in new_lines:
if line.startswith('-A %s' % chain):
self.assertTrue('-j nova-filter-top' in line,
++++++ nova-rbd-use-local-devices.patch ++++++
From e9c36242bc3a5addad26cd622f35706d55a3f6c5 Mon Sep 17 00:00:00 2001
From: Ralf Haferkamp
Date: Tue, 3 Jul 2012 17:42:06 +0200
Subject: [PATCH] Use local rbd devices (/dev/rbd*) for rbd volumes
This adds a new LibirtVolumeDriver to nova-compute that will take care to
map/unmap local block devices for rbd volumes. The original approach for rbd
volumes required rbd-enabled libvirt and kvm/qemu. Which we currently don't
have on SLES-11-SP2.
Change-Id: I62e7664200bc83b948e19a65a3cbda81ebb0470e
---
nova/rootwrap/compute.py | 3 ++
nova/virt/libvirt/connection.py | 2 +-
nova/virt/libvirt/volume.py | 58 +++++++++++++++++++++++++++++++++++++++
nova/volume/driver.py | 6 ++++
4 files changed, 68 insertions(+), 1 deletions(-)
Index: nova-2012.1+git.1343445424.b68e9c6/nova/rootwrap/compute.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/rootwrap/compute.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/rootwrap/compute.py
@@ -113,6 +113,9 @@ filterlist = [
# nova/virt/libvirt/connection.py: 'dd', "if=%s" % virsh_output, ...
filters.CommandFilter("/bin/dd", "root"),
+ # nova/virt/libvirt/volume.py: 'rbd', "map/showmapped", ...
+ filters.CommandFilter("/usr/bin/rbd", "root"),
+
# nova/virt/xenapi/volume_utils.py: 'iscsiadm', '-m', ...
filters.CommandFilter("/sbin/iscsiadm", "root"),
Index: nova-2012.1+git.1343445424.b68e9c6/nova/virt/libvirt/connection.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/virt/libvirt/connection.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/virt/libvirt/connection.py
@@ -142,7 +142,7 @@ libvirt_opts = [
'iscsi=nova.virt.libvirt.volume.LibvirtISCSIVolumeDriver',
'local=nova.virt.libvirt.volume.LibvirtVolumeDriver',
'fake=nova.virt.libvirt.volume.LibvirtFakeVolumeDriver',
- 'rbd=nova.virt.libvirt.volume.LibvirtNetVolumeDriver',
+ 'rbd=nova.virt.libvirt.volume.LibvirtRbdVolumeDriver',
'sheepdog=nova.virt.libvirt.volume.LibvirtNetVolumeDriver'
],
help='Libvirt handlers for remote volumes.'),
Index: nova-2012.1+git.1343445424.b68e9c6/nova/virt/libvirt/volume.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/virt/libvirt/volume.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/virt/libvirt/volume.py
@@ -28,6 +28,8 @@ from nova import utils
LOG = logging.getLogger(__name__)
FLAGS = flags.FLAGS
flags.DECLARE('num_iscsi_scan_tries', 'nova.volume.driver')
+flags.DECLARE('rbd_secret_file', 'nova.volume.driver')
+flags.DECLARE('rbd_user', 'nova.volume.driver')
class LibvirtVolumeDriver(object):
@@ -68,6 +70,62 @@ class LibvirtFakeVolumeDriver(LibvirtVol
</disk>""" % (protocol, name, mount_device)
return xml
+class LibvirtRbdVolumeDriver(LibvirtVolumeDriver):
+ """Driver to attach RBD volumes to libvirt."""
+
+ def _rbd_get_mapped_device(self, pool, image):
+ (out, err) = utils.execute('rbd', 'showmapped')
+ lines = out.split('\n')
+ del(lines[0])
+ device_path=""
+ for line in lines:
+ elements = line.split('\t')
+ # elements is now [ id, pool, image, snap, device ]
+ if len(elements) == 5 and elements[1] == pool and elements[2] == image:
+ device_path = elements[4]
+ break
+ LOG.debug("device path: %s" % ( device_path))
+ if len(device_path) == 0:
+ LOG.info("No host device found for rbd image %s/%s" % (pool, image))
+ return device_path
+
+ def _rbd_map_volume(self, connection_info):
+ pool = connection_info['data']['pool']
+ image = connection_info['data']['image']
+ (out, err) = utils.execute('rbd', 'map', '-p', pool, image,
+ '--secret', FLAGS.rbd_secret_file,
+ '--user', FLAGS.rbd_user,
+ run_as_root=True)
+ LOG.debug("rbd map: stdout=%s stderr=%s" % ( out, err))
+ return self._rbd_get_mapped_device(pool, image)
+
+ def _rbd_unmap_volume(self, connection_info):
+ pool = connection_info['data']['pool']
+ image = connection_info['data']['image']
+ host_device = self._rbd_get_mapped_device(pool, image)
+ if len(host_device) > 0:
+ (out, err) = utils.execute('rbd', 'unmap', host_device,
+ '--secret', FLAGS.rbd_secret_file,
+ '--user', FLAGS.rbd_user,
+ run_as_root=True)
+ LOG.debug("rbd unmap: stdout=%s stderr=%s" % ( out, err))
+
+
+ def connect_volume(self, connection_info, mount_device):
+ """Connect the volume. Returns xml for libvirt."""
+ driver = self._pick_volume_driver()
+ host_device = self._rbd_map_volume(connection_info)
+
+ connection_info['data']['device_path'] = host_device
+ sup = super(LibvirtRbdVolumeDriver, self)
+ return sup.connect_volume(connection_info, mount_device)
+
+ def disconnect_volume(self, connection_info, mount_device):
+ """Detach the volume from instance_name"""
+ sup = super(LibvirtRbdVolumeDriver, self)
+ sup.disconnect_volume(connection_info, mount_device)
+ self._rbd_unmap_volume(connection_info)
+
class LibvirtNetVolumeDriver(LibvirtVolumeDriver):
"""Driver to attach Network volumes to libvirt."""
Index: nova-2012.1+git.1343445424.b68e9c6/nova/volume/driver.py
===================================================================
--- nova-2012.1+git.1343445424.b68e9c6.orig/nova/volume/driver.py
+++ nova-2012.1+git.1343445424.b68e9c6/nova/volume/driver.py
@@ -64,6 +64,10 @@ volume_opts = [
default=None,
help='the libvirt uuid of the secret for the rbd_user'
'volumes'),
+ cfg.StrOpt('rbd_secret_file',
+ default=None,
+ help='path the file containing the secret for the rbd_user'
+ 'volumes'),
]
FLAGS = flags.FLAGS
@@ -554,6 +558,8 @@ class RBDDriver(VolumeDriver):
'driver_volume_type': 'rbd',
'data': {
'name': '%s/%s' % (FLAGS.rbd_pool, volume['name']),
+ 'pool': FLAGS.rbd_pool,
+ 'image' : volume['name'],
'auth_enabled': FLAGS.rbd_secret_uuid is not None,
'auth_username': FLAGS.rbd_user,
'secret_type': 'ceph',
++++++ nova-volume-list-all_tenants.patch ++++++
From 7e65b09654fc79b183f10c982b7493b3779e25e8 Mon Sep 17 00:00:00 2001
From: jakedahn
Date: Thu, 9 Aug 2012 14:28:28 -0700
Subject: [PATCH] Default behavior should restrict admins to tenant for
volumes.
* NOTE: This is a port from cinder to nova volumes
* Now to view all volumes or volume snapshots across
all tenants you need to include the all_tenants=1
GET param in your api request.
* Fixes remaining issues blocking bug #967882
Conflicts:
nova/tests/api/openstack/fakes.py
nova/tests/api/openstack/volume/test_volumes.py
Change-Id: I395699e169dbe474c4c603393b81a80523312088
---
nova/api/openstack/volume/snapshots.py | 6 ++-
nova/api/openstack/volume/volumes.py | 27 +++++++++++++-
nova/tests/api/ec2/test_cloud.py | 13 ++++---
nova/tests/api/openstack/fakes.py | 34 ++++++++++++++++-
nova/tests/api/openstack/volume/test_snapshots.py | 41 +++++++++++++++++++--
nova/tests/api/openstack/volume/test_volumes.py | 38 ++++++++++++++++++-
nova/volume/api.py | 26 +++++++++----
7 files changed, 165 insertions(+), 20 deletions(-)
diff --git a/nova/api/openstack/volume/snapshots.py b/nova/api/openstack/volume/snapshots.py
index 317608a..69b7f8b 100644
--- a/nova/api/openstack/volume/snapshots.py
+++ b/nova/api/openstack/volume/snapshots.py
@@ -130,7 +130,11 @@ class SnapshotsController(object):
"""Returns a list of snapshots, transformed through entity_maker."""
context = req.environ['nova.context']
- snapshots = self.volume_api.get_all_snapshots(context)
+ search_opts = {}
+ search_opts.update(req.GET)
+
+ snapshots = self.volume_api.get_all_snapshots(context,
+ search_opts=search_opts)
limited_list = common.limited(snapshots, req)
res = [entity_maker(context, snapshot) for snapshot in limited_list]
return {'snapshots': res}
diff --git a/nova/api/openstack/volume/volumes.py b/nova/api/openstack/volume/volumes.py
index 7789bc1..41fc7b8 100644
--- a/nova/api/openstack/volume/volumes.py
+++ b/nova/api/openstack/volume/volumes.py
@@ -202,9 +202,15 @@ class VolumeController(object):
def _items(self, req, entity_maker):
"""Returns a list of volumes, transformed through entity_maker."""
+
+ search_opts = {}
+ search_opts.update(req.GET)
+
context = req.environ['nova.context']
+ remove_invalid_options(context,
+ search_opts, self._get_volume_search_options())
- volumes = self.volume_api.get_all(context)
+ volumes = self.volume_api.get_all(context, search_opts=search_opts)
limited_list = common.limited(volumes, req)
res = [entity_maker(context, vol) for vol in limited_list]
return {'volumes': res}
@@ -255,6 +261,25 @@ class VolumeController(object):
return {'volume': retval}
+ def _get_volume_search_options(self):
+ """Return volume search options allowed by non-admin."""
+ return ('name', 'status')
+
def create_resource():
return wsgi.Resource(VolumeController())
+
+
+def remove_invalid_options(context, search_options, allowed_search_options):
+ """Remove search options that are not valid for non-admin API/context."""
+ if context.is_admin:
+ # Allow all options
+ return
+ # Otherwise, strip out all unknown options
+ unknown_options = [opt for opt in search_options
+ if opt not in allowed_search_options]
+ bad_options = ", ".join(unknown_options)
+ log_msg = _("Removing options '%(bad_options)s' from query") % locals()
+ LOG.debug(log_msg)
+ for opt in unknown_options:
+ search_options.pop(opt, None)
diff --git a/nova/tests/api/ec2/test_cloud.py b/nova/tests/api/ec2/test_cloud.py
index 4ed3c04..c40a931 100644
--- a/nova/tests/api/ec2/test_cloud.py
+++ b/nova/tests/api/ec2/test_cloud.py
@@ -568,8 +568,8 @@ class CloudTestCase(test.TestCase):
def test_describe_volumes(self):
"""Makes sure describe_volumes works and filters results."""
- vol1 = db.volume_create(self.context, {})
- vol2 = db.volume_create(self.context, {})
+ vol1 = db.volume_create(self.context, {'project_id': self.project_id})
+ vol2 = db.volume_create(self.context, {'project_id': self.project_id})
result = self.cloud.describe_volumes(self.context)
self.assertEqual(len(result['volumeSet']), 2)
volume_id = ec2utils.id_to_ec2_vol_id(vol2['id'])
@@ -604,7 +604,8 @@ class CloudTestCase(test.TestCase):
def test_create_volume_from_snapshot(self):
"""Makes sure create_volume works when we specify a snapshot."""
- vol = db.volume_create(self.context, {'size': 1})
+ vol = db.volume_create(self.context, {'size': 1,
+ 'project_id': self.project_id})
snap = db.snapshot_create(self.context, {'volume_id': vol['id'],
'volume_size': vol['size'],
'status': "available"})
@@ -641,8 +642,10 @@ class CloudTestCase(test.TestCase):
def test_describe_snapshots(self):
"""Makes sure describe_snapshots works and filters results."""
vol = db.volume_create(self.context, {})
- snap1 = db.snapshot_create(self.context, {'volume_id': vol['id']})
- snap2 = db.snapshot_create(self.context, {'volume_id': vol['id']})
+ snap1 = db.snapshot_create(self.context,
+ {'volume_id': vol['id'], 'project_id': self.project_id})
+ snap2 = db.snapshot_create(self.context,
+ {'volume_id': vol['id'], 'project_id': self.project_id})
result = self.cloud.describe_snapshots(self.context)
self.assertEqual(len(result['snapshotSet']), 2)
snapshot_id = ec2utils.id_to_ec2_snap_id(snap2['id'])
diff --git a/nova/tests/api/openstack/fakes.py b/nova/tests/api/openstack/fakes.py
index af79df9..91fe82b 100644
--- a/nova/tests/api/openstack/fakes.py
+++ b/nova/tests/api/openstack/fakes.py
@@ -652,5 +652,37 @@ def stub_volume_get_notfound(self, context, volume_id):
raise exc.NotFound
-def stub_volume_get_all(self, context, search_opts=None):
+def stub_volume_get_all(context, search_opts=None):
+ return [stub_volume(100, project_id='fake'),
+ stub_volume(101, project_id='superfake'),
+ stub_volume(102, project_id='superduperfake')]
+
+
+def stub_volume_get_all_by_project(self, context, search_opts=None):
return [stub_volume_get(self, context, 1)]
+
+
+def stub_snapshot(id, **kwargs):
+ snapshot = {
+ 'id': id,
+ 'volume_id': 12,
+ 'status': 'available',
+ 'volume_size': 100,
+ 'created_at': None,
+ 'display_name': 'Default name',
+ 'display_description': 'Default description',
+ 'project_id': 'fake'
+ }
+
+ snapshot.update(kwargs)
+ return snapshot
+
+
+def stub_snapshot_get_all(self):
+ return [stub_snapshot(100, project_id='fake'),
+ stub_snapshot(101, project_id='superfake'),
+ stub_snapshot(102, project_id='superduperfake')]
+
+
+def stub_snapshot_get_all_by_project(self, context):
+ return [stub_snapshot(1)]
diff --git a/nova/tests/api/openstack/volume/test_snapshots.py b/nova/tests/api/openstack/volume/test_snapshots.py
index 663337e..8830eec 100644
--- a/nova/tests/api/openstack/volume/test_snapshots.py
+++ b/nova/tests/api/openstack/volume/test_snapshots.py
@@ -19,6 +19,7 @@ from lxml import etree
import webob
from nova.api.openstack.volume import snapshots
+from nova import db
from nova import exception
from nova import flags
from nova import log as logging
@@ -64,7 +65,7 @@ def stub_snapshot_get(self, context, snapshot_id):
return param
-def stub_snapshot_get_all(self, context):
+def stub_snapshot_get_all(self, context, search_opts=None):
param = _get_default_snapshot_param()
return [param]
@@ -74,9 +75,10 @@ class SnapshotApiTest(test.TestCase):
super(SnapshotApiTest, self).setUp()
self.controller = snapshots.SnapshotsController()
- self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get)
- self.stubs.Set(volume.api.API, "get_all_snapshots",
- stub_snapshot_get_all)
+ self.stubs.Set(db, 'snapshot_get_all_by_project',
+ fakes.stub_snapshot_get_all_by_project)
+ self.stubs.Set(db, 'snapshot_get_all',
+ fakes.stub_snapshot_get_all)
def test_snapshot_create(self):
self.stubs.Set(volume.api.API, "create_snapshot", stub_snapshot_create)
@@ -114,6 +116,7 @@ class SnapshotApiTest(test.TestCase):
snapshot['display_description'])
def test_snapshot_delete(self):
+ self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get)
self.stubs.Set(volume.api.API, "delete_snapshot", stub_snapshot_delete)
snapshot_id = 123
@@ -131,6 +134,7 @@ class SnapshotApiTest(test.TestCase):
snapshot_id)
def test_snapshot_show(self):
+ self.stubs.Set(volume.api.API, "get_snapshot", stub_snapshot_get)
req = fakes.HTTPRequest.blank('/v1/snapshots/123')
resp_dict = self.controller.show(req, 123)
@@ -146,6 +150,8 @@ class SnapshotApiTest(test.TestCase):
snapshot_id)
def test_snapshot_detail(self):
+ self.stubs.Set(volume.api.API, "get_all_snapshots",
+ stub_snapshot_get_all)
req = fakes.HTTPRequest.blank('/v1/snapshots/detail')
resp_dict = self.controller.detail(req)
@@ -156,6 +162,33 @@ class SnapshotApiTest(test.TestCase):
resp_snapshot = resp_snapshots.pop()
self.assertEqual(resp_snapshot['id'], '123')
+ def test_admin_list_snapshots_limited_to_project(self):
+ req = fakes.HTTPRequest.blank('/v1/fake/snapshots',
+ use_admin_context=True)
+ res = self.controller.index(req)
+
+ self.assertTrue('snapshots' in res)
+ self.assertEqual(1, len(res['snapshots']))
+
+ def test_admin_list_snapshots_all_tenants(self):
+ req = fakes.HTTPRequest.blank('/v2/fake/snapshots?all_tenants=1',
+ use_admin_context=True)
+ res = self.controller.index(req)
+ self.assertTrue('snapshots' in res)
+ self.assertEqual(3, len(res['snapshots']))
+
+ def test_all_tenants_non_admin_gets_all_tenants(self):
+ req = fakes.HTTPRequest.blank('/v2/fake/snapshots?all_tenants=1')
+ res = self.controller.index(req)
+ self.assertTrue('snapshots' in res)
+ self.assertEqual(1, len(res['snapshots']))
+
+ def test_non_admin_get_by_project(self):
+ req = fakes.HTTPRequest.blank('/v2/fake/snapshots')
+ res = self.controller.index(req)
+ self.assertTrue('snapshots' in res)
+ self.assertEqual(1, len(res['snapshots']))
+
class SnapshotSerializerTest(test.TestCase):
def _verify_snapshot(self, snap, tree):
diff --git a/nova/tests/api/openstack/volume/test_volumes.py b/nova/tests/api/openstack/volume/test_volumes.py
index 7befe96..4bd6e56 100644
--- a/nova/tests/api/openstack/volume/test_volumes.py
+++ b/nova/tests/api/openstack/volume/test_volumes.py
@@ -19,6 +19,7 @@ from lxml import etree
import webob
from nova.api.openstack.volume import volumes
+from nova import db
from nova import flags
from nova import test
from nova.tests.api.openstack import fakes
@@ -33,7 +34,9 @@ class VolumeApiTest(test.TestCase):
super(VolumeApiTest, self).setUp()
self.controller = volumes.VolumeController()
- self.stubs.Set(volume_api.API, 'get_all', fakes.stub_volume_get_all)
+ self.stubs.Set(db, 'volume_get_all', fakes.stub_volume_get_all)
+ self.stubs.Set(db, 'volume_get_all_by_project',
+ fakes.stub_volume_get_all_by_project)
self.stubs.Set(volume_api.API, 'get', fakes.stub_volume_get)
self.stubs.Set(volume_api.API, 'delete', fakes.stub_volume_delete)
@@ -73,6 +76,9 @@ class VolumeApiTest(test.TestCase):
body)
def test_volume_list(self):
+ self.stubs.Set(volume_api.API, 'get_all',
+ fakes.stub_volume_get_all_by_project)
+
req = fakes.HTTPRequest.blank('/v1/volumes')
res_dict = self.controller.index(req)
expected = {'volumes': [{'status': 'fakestatus',
@@ -93,6 +99,9 @@ class VolumeApiTest(test.TestCase):
self.assertEqual(res_dict, expected)
def test_volume_list_detail(self):
+ self.stubs.Set(volume_api.API, 'get_all',
+ fakes.stub_volume_get_all_by_project)
+
req = fakes.HTTPRequest.blank('/v1/volumes/detail')
res_dict = self.controller.index(req)
expected = {'volumes': [{'status': 'fakestatus',
@@ -177,6 +186,33 @@ class VolumeApiTest(test.TestCase):
req,
1)
+ def test_admin_list_volumes_limited_to_project(self):
+ req = fakes.HTTPRequest.blank('/v2/fake/volumes',
+ use_admin_context=True)
+ res = self.controller.index(req)
+
+ self.assertTrue('volumes' in res)
+ self.assertEqual(1, len(res['volumes']))
+
+ def test_admin_list_volumes_all_tenants(self):
+ req = fakes.HTTPRequest.blank('/v2/fake/volumes?all_tenants=1',
+ use_admin_context=True)
+ res = self.controller.index(req)
+ self.assertTrue('volumes' in res)
+ self.assertEqual(3, len(res['volumes']))
+
+ def test_all_tenants_non_admin_gets_all_tenants(self):
+ req = fakes.HTTPRequest.blank('/v2/fake/volumes?all_tenants=1')
+ res = self.controller.index(req)
+ self.assertTrue('volumes' in res)
+ self.assertEqual(1, len(res['volumes']))
+
+ def test_non_admin_get_by_project(self):
+ req = fakes.HTTPRequest.blank('/v2/fake/volumes')
+ res = self.controller.index(req)
+ self.assertTrue('volumes' in res)
+ self.assertEqual(1, len(res['volumes']))
+
class VolumeSerializerTest(test.TestCase):
def _verify_volume_attachment(self, attach, tree):
diff --git a/nova/volume/api.py b/nova/volume/api.py
index c5faf4a..67c54df 100644
--- a/nova/volume/api.py
+++ b/nova/volume/api.py
@@ -179,14 +179,19 @@ class API(base.Base):
check_policy(context, 'get', volume)
return volume
- def get_all(self, context, search_opts={}):
+ def get_all(self, context, search_opts=None):
check_policy(context, 'get_all')
- if context.is_admin:
+
+ if search_opts is None:
+ search_opts = {}
+
+ if (context.is_admin and 'all_tenants' in search_opts):
+ # Need to remove all_tenants to pass the filtering below.
+ del search_opts['all_tenants']
volumes = self.db.volume_get_all(context)
else:
volumes = self.db.volume_get_all_by_project(context,
- context.project_id)
-
+ context.project_id)
if search_opts:
LOG.debug(_("Searching by: %s") % str(search_opts))
@@ -225,11 +230,18 @@ class API(base.Base):
rv = self.db.snapshot_get(context, snapshot_id)
return dict(rv.iteritems())
- def get_all_snapshots(self, context):
+ def get_all_snapshots(self, context, search_opts=None):
check_policy(context, 'get_all_snapshots')
- if context.is_admin:
+
+ search_opts = search_opts or {}
+
+ if (context.is_admin and 'all_tenants' in search_opts):
+ # Need to remove all_tenants to pass the filtering below.
+ del search_opts['all_tenants']
return self.db.snapshot_get_all(context)
- return self.db.snapshot_get_all_by_project(context, context.project_id)
+ else:
+ return self.db.snapshot_get_all_by_project(context,
+ context.project_id)
@wrap_check_policy
def check_attach(self, context, volume):
--
1.7.10.4
++++++ nova-xen.patch ++++++
commit 2e1be5e7d3bac1502f18fb3b90ce94a923d01928
Author: Christoph Thiel
Date: Tue Jul 24 14:03:10 2012 +0200
libvirt driver: improve xen support for hvm and pv mode
This patch improves the libvirt.xml.template to generate a working
libvirt configuration for both hvm and pv instances. It sets correct
driver_names, which are required to making qcow2 images work for xen. It
also sets the os type based on the vm_mode and uses hvmloader for hvm
instances.
Change-Id: I5f92bedf6588ab2674d784772a5ecdb895fabe40
Index: nova-2012.1+git.1344381521.d4c7f6f/nova/virt/libvirt.xml.template
===================================================================
--- nova-2012.1+git.1344381521.d4c7f6f.orig/nova/virt/libvirt.xml.template
+++ nova-2012.1+git.1344381521.d4c7f6f/nova/virt/libvirt.xml.template
@@ -16,11 +16,16 @@
<root>${root_device_name}</root>
#else
#if $type == 'xen'
- #set $root_disk_bus = 'scsi'
- #set $ephemeral_disk_bus = 'scsi'
+ #set $root_disk_bus = 'xen'
+ #set $ephemeral_disk_bus = 'xen'
+ #if $vm_mode == 'hvm'
+ <type>hvm</type>
+ <loader>/usr/lib/xen/boot/hvmloader</loader>
+ #else
<type>linux</type>
#set $root_device_name = $getVar('root_device_name', '/dev/xvda')
<root>${root_device_name}</root>
+ #end if
#else
#set $ephemeral_disk_bus = 'virtio'
#if $root_device_type == 'cdrom'
@@ -66,40 +71,64 @@
#else
#if $getVar('rescue', False)
<disk type='file'>
+ #if $type == 'xen'
+ <driver name='${driver_name}' type='${driver_type}' cache='${cachemode}'/>
+ #else
<driver type='${driver_type}' cache='${cachemode}'/>
+ #end if
<source file='${basepath}/disk.rescue'/>
<target dev='${disk_prefix}a' bus='${ephemeral_disk_bus}'/>
</disk>
<disk type='file'>
+ #if $type == 'xen'
+ <driver name='${driver_name}' type='${driver_type}' cache='${cachemode}'/>
+ #else
<driver type='${driver_type}' cache='${cachemode}'/>
+ #end if
<source file='${basepath}/disk'/>
<target dev='${disk_prefix}b' bus='${ephemeral_disk_bus}'/>
</disk>
#else
#if not ($getVar('ebs_root', False))
<disk type='file' device='${root_device_type}'>
+ #if $type == 'xen'
+ <driver name='${driver_name}' type='${driver_type}' cache='${cachemode}'/>
+ #else
<driver type='${driver_type}' cache='${cachemode}'/>
+ #end if
<source file='${basepath}/disk'/>
<target dev='${root_device}' bus='${root_disk_bus}'/>
</disk>
#end if
#if $getVar('ephemeral_device', False)
<disk type='file'>
+ #if $type == 'xen'
+ <driver name='${driver_name}' type='${driver_type}' cache='${cachemode}'/>
+ #else
<driver type='${driver_type}' cache='${cachemode}'/>
+ #end if
<source file='${basepath}/disk.local'/>
<target dev='${ephemeral_device}' bus='${ephemeral_disk_bus}'/>
</disk>
#end if
#for $eph in $ephemerals
<disk type='block'>
+ #if $type == 'xen'
+ <driver name='${driver_name}' type='${driver_type}' cache='${cachemode}'/>
+ #else
<driver type='${driver_type}' cache='${cachemode}'/>
+ #end if
<source dev='${basepath}/${eph.device_path}'/>
<target dev='${eph.device}' bus='${ephemeral_disk_bus}'/>
</disk>
#end for
#if $getVar('swap_device', False)
<disk type='file'>
+ #if $type == 'xen'
+ <driver name='${driver_name}' type='${driver_type}' cache='${cachemode}'/>
+ #else
<driver type='${driver_type}' cache='${cachemode}'/>
+ #end if
<source file='${basepath}/disk.swap'/>
<target dev='${swap_device}' bus='${ephemeral_disk_bus}'/>
</disk>
@@ -110,7 +139,11 @@
#end if
#if $getVar('config_drive', False)
<disk type='file'>
+ #if $type == 'xen'
+ <driver name='file' type='raw' cache='${cachemode}'/>
+ #else
<driver type='raw' cache='${cachemode}'/>
+ #end if
<source file='${basepath}/disk.config' />
<target dev='${disk_prefix}z' bus='${ephemeral_disk_bus}' />
</disk>
Index: nova-2012.1+git.1344381521.d4c7f6f/nova/virt/libvirt/connection.py
===================================================================
--- nova-2012.1+git.1344381521.d4c7f6f.orig/nova/virt/libvirt/connection.py
+++ nova-2012.1+git.1344381521.d4c7f6f/nova/virt/libvirt/connection.py
@@ -1432,8 +1432,10 @@ class LibvirtConnection(driver.ComputeDr
inst_type = instance_types.get_instance_type(inst_type_id)
if FLAGS.use_cow_images:
+ driver_name = 'tap'
driver_type = 'qcow2'
else:
+ driver_name = 'file'
driver_type = 'raw'
if image_meta and image_meta.get('disk_format') == 'iso':
@@ -1468,7 +1470,25 @@ class LibvirtConnection(driver.ComputeDr
'device': block_device.strip_dev(
eph['device_name'])})
+ if FLAGS.libvirt_type == 'xen':
+ # default vm_mode to xen (aka pv) for xen, if no vm_mode is
+ # specified for an image, to not change the behavior of the
+ # xen driver
+ vm_mode = instance.get('vm_mode')
+ if not vm_mode:
+ vm_mode = 'xen'
+ else:
+ vm_mode = vm_mode.lower()
+
+ if vm_mode in ('hv', 'hvm'):
+ vm_mode = 'hvm'
+ if vm_mode not in ('xen', 'hvm'):
+ vm_mode = 'hvm'
+ else:
+ vm_mode = None
+
xml_info = {'type': FLAGS.libvirt_type,
+ 'vm_mode': vm_mode,
'name': instance['name'],
'uuid': instance['uuid'],
'cachemode': self.disk_cachemode,
@@ -1479,6 +1499,7 @@ class LibvirtConnection(driver.ComputeDr
'rescue': rescue,
'disk_prefix': self._disk_prefix,
'driver_type': driver_type,
+ 'driver_name': driver_name,
'root_device_type': root_device_type,
'vif_type': FLAGS.libvirt_vif_type,
'nics': nics,
++++++ nova.conf ++++++
--- /var/tmp/diff_new_pack.ZhabS3/_old 2012-11-15 09:43:22.000000000 +0100
+++ /var/tmp/diff_new_pack.ZhabS3/_new 2012-11-15 09:43:22.000000000 +0100
@@ -5,6 +5,8 @@
--dhcpbridge=/usr/bin/nova-dhcpbridge
--logdir=/var/log/nova
--state_path=/var/lib/nova
+--lock_path=/var/run/nova
+--root_helper=sudo /usr/bin/nova-rootwrap
--verbose
--sql_connection=mysql://root:<mysql-password>@<IP>/nova
--s3_host=<IP>
++++++ openstack-nova-api.wsgi ++++++
#
# OpenStack Compute (Nova) API WSGI app skeleton
#
import eventlet
eventlet.monkey_patch()
import os
import sys
from paste import deploy
from nova import flags
from nova import log as logging
from nova import utils
utils.default_flagfile()
flags.FLAGS(sys.argv)
logging.setup()
utils.monkey_patch()
LOG = logging.getLogger(__name__)
app_name = os.path.basename(__file__).rsplit('.')[0]
config_path = utils.find_config(flags.FLAGS.api_paste_config)
if app_name in flags.FLAGS.enabled_apis:
application = deploy.loadapp("config:%s" % config_path, name=app_name)
else:
LOG.error("Not starting disabled Nova WSGI application '%s'" % app_name)
++++++ openstack-nova-manage.sh ++++++
# bash completion for openstack nova-manage
# by Dominik Heidler <dheidler suse.de>
_nova_manage_opts="" # lazy init
_nova_manage_opts_exp="" # lazy init
# this will only work with bash 4
## declare dict
#declare -A _nova_manage_subopts
# dict hack for bash 3
# ...yea yea and eval is evil and you
# could use it to inject malicious
# code to .....yourself?
# bash 3 sucks...
_set_nova_manage_subopts () {
eval _nova_manage_subopts_"$1"='$2'
}
_get_nova_manage_subopts () {
eval echo '${_nova_manage_subopts_'"$1"'#_nova_manage_subopts_}'
}
_nova_manage()
{
local cur prev subopts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
if [ "x$_nova_manage_opts" == "x" ] ; then
_nova_manage_opts="`nova-manage bash-completion 2>/dev/null | sed -e "1d" -e "s/^\s*//g"`"
_nova_manage_opts_exp="`echo $_nova_manage_opts | sed -e "s/\s/|/g"`"
fi
if [[ " `echo $_nova_manage_opts` " =~ " $prev " ]] ; then
#if [ "x${_nova_manage_subopts["$prev"]}" == "x" ] ; then
if [ "x$(_get_nova_manage_subopts "$prev")" == "x" ] ; then
subopts="`nova-manage $prev bash-completion 2>/dev/null | sed -e "1d"`"
#_nova_manage_subopts+=( ["$prev"]="$subopts" )
_set_nova_manage_subopts "$prev" "$subopts"
fi
#COMPREPLY=($(compgen -W "${_nova_manage_subopts["$prev"]}" -- ${cur}))
COMPREPLY=($(compgen -W "$(_get_nova_manage_subopts "$prev")" -- ${cur}))
elif [[ ! " ${COMP_WORDS[@]} " =~ " "($_nova_manage_opts_exp)" " ]] ; then
COMPREPLY=($(compgen -W "${_nova_manage_opts}" -- ${cur}))
fi
return 0
}
complete -F _nova_manage nova-manage
++++++ openstack-nova-network-init-bnc777488.patch ++++++
--- openstack-nova-network.orig 2012-08-17 15:38:54.000000000 +0000
+++ openstack-nova-network 2012-08-28 18:06:45.000000000 +0000
@@ -45,9 +45,31 @@
FULLNAME="OpenStack::Nova $name server"
CHUSER="-u $USER"
+iptables_setup()
+{
+ mode=$1
+ if [ -n "$ADMINNETWORK" ] && grep -qx 'enabled_apis=metadata' /etc/nova/nova.conf ; then # this must not run outside of compute nodes
+ interface=$(perl -ne 'm/flat_network_bridge=([0-9a-z.-]+)/ && print $1' /etc/nova/nova.conf)
+ if [ -z "$interface" ] ; then
+ echo "error: no flat_network_bridge interface found in nova.conf"
+ echo "can not set iptables rules"
+ else
+ PATH="/sbin:/usr/sbin:/usr/bin:/bin"
+ c="nova-filter-FORWARD-sitelocl"
+ iptables -N $c 2>/dev/null
+ iptables -$mode $c -d $STORAGENETWORK/$STORAGENETMASK -j REJECT
+ iptables -$mode INPUT -d $STORAGENETWORK/$STORAGENETMASK -i $interface -j REJECT
+ iptables -$mode $c -d $ADMINNETWORK/$ADMINNETMASK -j REJECT
+ iptables -$mode INPUT -d $ADMINNETWORK/$ADMINNETMASK -i $interface -j REJECT
+ iptables -$mode INPUT -p tcp --dport 8775 -i $interface -j ACCEPT # metadata api
+ fi
+ fi
+}
+
case "$1" in
start)
echo -n "Starting $FULLNAME"
+ iptables_setup I
startproc -s $CHUSER -t ${STARTUP_TIMEOUT:-5} -q /usr/bin/nova-$name $OPTIONS
rc_status -v
;;
@@ -55,6 +77,7 @@
echo -n "Shutting down $FULLNAME"
killproc /usr/bin/nova-$name
rc_status -v
+ iptables_setup D
;;
restart)
$0 stop
++++++ openstack-nova-vncproxy.init ++++++
#!/bin/sh
### BEGIN INIT INFO
# Provides: openstack-nova-vncproxy
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Should-Start: rabbitmq-server mysql postgresql
# Should-Stop: rabbitmq-server mysql postgresql
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Nova vncproxy server
# Description: Nova vncproxy server.
### END INIT INFO
name="vncproxy"
USER="openstack-nova"
GROUP="nobody"
FLAGFILE="/etc/nova/nova.conf"
RUNDIR="/var/run/nova"
LOGFILE="/var/log/nova/$name.log"
[ -e "/etc/sysconfig/openstack-nova-$name" ] && . "/etc/sysconfig/openstack-nova-$name"
mkdir -p $RUNDIR
DAEMON="/usr/bin/nova-xvpvncproxy"
DAEMON_OPTIONS="--flagfile=$FLAGFILE --logfile=$LOGFILE"
OPTIONS="${OPTIONS} $DAEMON_OPTIONS"
# Shell functions sourced from /etc/rc.status:
# rc_check check and set local and overall rc status
# rc_status check and set local and overall rc status
# rc_status -v be verbose in local rc status and clear it afterwards
# rc_status -v -r ditto and clear both the local and overall rc status
# rc_status -s display "skipped" and exit with status 3
# rc_status -u display "unused" and exit with status 3
# rc_failed set local and overall rc status to failed
# rc_failed <num> set local and overall rc status to <num>
# rc_reset clear both the local and overall rc status
# rc_exit exit appropriate to overall rc status
# rc_active checks whether a service is activated by symlinks
. /etc/rc.status
FULLNAME="OpenStack::Nova $name server"
CHUSER="-u $USER"
case "$1" in
start)
echo -n "Starting $FULLNAME"
startproc -s $CHUSER -t ${STARTUP_TIMEOUT:-5} -q $DAEMON $OPTIONS
rc_status -v
;;
stop)
echo -n "Shutting down $FULLNAME"
killproc $DAEMON
rc_status -v
;;
restart)
$0 stop
$0 start
rc_status
;;
reload)
;;
status)
echo -n "Checking $FULLNAME"
/sbin/checkproc $DAEMON
rc_status -v
;;
condrestart|try-restart)
$0 restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
exit 2
esac
exit $?
++++++ openstack-nova.init ++++++
--- /var/tmp/diff_new_pack.ZhabS3/_old 2012-11-15 09:43:22.000000000 +0100
+++ /var/tmp/diff_new_pack.ZhabS3/_new 2012-11-15 09:43:22.000000000 +0100
@@ -4,7 +4,8 @@
# Provides: openstack-nova-__NAME__
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
-# Should-Start: rabbitmq-server redis mysql
+# Should-Start: rabbitmq-server mysql postgresql
+# Should-Stop: rabbitmq-server mysql postgresql
# Default-Start: 3 5
# Default-Stop: 0 1 2 6
# Short-Description: Nova __NAME__ server
@@ -12,7 +13,7 @@
### END INIT INFO
name="__NAME__"
-USER="nova"
+USER="openstack-nova"
GROUP="nobody"
FLAGFILE="/etc/nova/nova.conf"
RUNDIR="/var/run/nova"
@@ -20,7 +21,9 @@
[ -e "/etc/sysconfig/openstack-nova-$name" ] && . "/etc/sysconfig/openstack-nova-$name"
+[ -e $LOGFILE ] || touch $LOGFILE
mkdir -p $RUNDIR
+chown $USER. $RUNDIR $LOGFILE
DAEMON_OPTIONS="--flagfile=$FLAGFILE --logfile=$LOGFILE"
OPTIONS="${OPTIONS} $DAEMON_OPTIONS"
@@ -40,11 +43,12 @@
. /etc/rc.status
FULLNAME="OpenStack::Nova $name server"
+CHUSER="-u $USER"
case "$1" in
start)
echo -n "Starting $FULLNAME"
- startproc -t ${STARTUP_TIMEOUT:-5} -q /usr/bin/nova-$name $OPTIONS
+ startproc -s $CHUSER -t ${STARTUP_TIMEOUT:-5} -q /usr/bin/nova-$name $OPTIONS
rc_status -v
;;
stop)
@@ -65,8 +69,17 @@
rc_status -v
;;
condrestart|try-restart)
- $0 restart
- ;;
+ if test "$1" = "condrestart"; then
+ echo "${attn} Use try-restart ${done}(LSB)${attn} rather than condrestart ${warn}(RH)${norm}"
+ fi
+ $0 status
+ if test $? = 0; then
+ $0 restart
+ else
+ rc_reset # Not running is not a failure.
+ fi
+ rc_status
+ ;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart}"
exit 2
++++++ openstack-nova.logrotate ++++++
--- /var/tmp/diff_new_pack.ZhabS3/_old 2012-11-15 09:43:22.000000000 +0100
+++ /var/tmp/diff_new_pack.ZhabS3/_new 2012-11-15 09:43:22.000000000 +0100
@@ -1,5 +1,5 @@
/var/log/nova/*.log {
daily
missingok
- postrotate
+ su openstack-nova openstack-nova
}
++++++ org.openstack.nova.compute.pkla ++++++
[Grant nova-compute libvirt management permissions]
Identity=unix-user:openstack-nova
Action=org.libvirt.unix.manage
ResultAny=yes
ResultInactive=yes
ResultActive=yes
++++++ rpmlintrc ++++++
# Bash completion files reside in /etc but are not meant to be configurable:
addFilter("non-conffile-in-etc /etc/bash_completion.d/openstack-nova-manage.sh")
#TODO: Fix this later on (i.e. SLE-12), Python on SLE-11 is way beyond broken:
addFilter("no-binary")
# This symling is for the -test package and can be ignored:
addFilter("dangling-symlink /var/lib/openstack-nova-test/nova")
addFilter("/var/lib/openstack-nova-test")
++++++ show ++++++
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta http-equiv="Content-Script-Type" content="text/javascript"/>
<meta http-equiv="Content-Style-Type" content="text/css"/>
<link href="/favicon.ico" rel="shortcut icon" />
<title>Show SUSE:SLE-11-SP2:Update:Test - SUSE Internal OBS Instance</title>
<link href="/assets/application-850deb713d968f94884189126243a19d.css" media="screen" rel="stylesheet" type="text/css" />
<script src="/assets/application-d1abf226b2f2d7d77f9a2a9be2336524.js" type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
var _paq = _paq || [];
$(function() {
$("#advanced_tabs_trigger").click(function() {
$("#advanced_tabs").show();
$("#advanced_list_item").hide();
});
var packages = [ ['3ddiag'],['844-ksc-pcf'],['AdobeICCProfiles'],['Botan'],['CASA'],['CASA-kwallet'],['CASA_auth_token_client'],['CASA_auth_token_svc'],['CID-keyed-fonts-MOE'],['ClusterTools2'],['CodeAnalyst'],['CondorPeak-2-6-27'],['ConsoleKit'],['ConsoleKit-doc'],['CreateRecoveryISO'],['Crystalcursors'],['DirectFB'],['ElectricFence'],['FastCGI'],['FirmwareUpdateKit'],['GeoIP'],['GraphicsMagick'],['ICAClient'],['IPAPGothic'],['IPython'],['IlmBase'],['ImageMagick'],['KhmerOS-fonts'],['LibVNCServer'],['Mesa'],['MesaGLw'],['ModemManager'],['Modules'],['MozillaFirefox'],['MozillaFirefox-branding-SLED'],['MozillaFirefox-branding-SLES-for-VMware'],['MozillaThunderbird'],['MyODBC-unixODBC'],['NetworkManager'],['NetworkManager-gnome'],['NetworkManager-kde'],['NetworkManager-kde4'],['NetworkManager-novellvpn'],['NetworkManager-openvpn'],['NetworkManager-pptp'],['NetworkManager-vpnc'],['OpenEXR'],['OpenIPMI'],['OpenOffice_org'],['OpenOffice_org-LanguageTool'],['OpenOffice_org-Quickstarter'],['OpenOffice_org-artwork'],['OpenOffice_org-base'],['OpenOffice_org-bootstrap'],['OpenOffice_org-branding-SLED'],['OpenOffice_org-branding-setting-hp'],['OpenOffice_org-branding-upstream'],['OpenOffice_org-calc'],['OpenOffice_org-components'],['OpenOffice_org-converter'],['OpenOffice_org-extensions'],['OpenOffice_org-filters'],['OpenOffice_org-help'],['OpenOffice_org-help-en-US'],['OpenOffice_org-help-group1'],['OpenOffice_org-help-group2'],['OpenOffice_org-help-group3'],['OpenOffice_org-help-group4'],['OpenOffice_org-help-group5'],['OpenOffice_org-hyphen'],['OpenOffice_org-icon-themes'],['OpenOffice_org-impress'],['OpenOffice_org-l10n'],['OpenOffice_org-l10n-extras'],['OpenOffice_org-libs-core'],['OpenOffice_org-libs-extern'],['OpenOffice_org-libs-gui'],['OpenOffice_org-openclipart'],['OpenOffice_org-templates-de'],['OpenOffice_org-templates-en'],['OpenOffice_org-templates-labels'],['OpenOffice_org-templates-presentation-layouts'],['OpenOffice_org-thesaurus'],['OpenOffice_org-ure'],['OpenOffice_org-writer'],['POS_Contrib'],['POS_Image3'],['POS_Server3'],['PackageKit'],['PgTcl'],['PolicyKit'],['PolicyKit-doc'],['PolicyKit-gnome'],['PolicyKit-kde'],['PyGreSQL'],['SDL'],['SDL_image'],['SDL_mixer'],['SDL_net'],['SDL_ttf'],['SLE11-SP1-JeOS-esx'],['SLE11-SP1-JeOS-xen'],['SLE11-SP1-WebYaST-vmx'],['SLEPOS_en'],['SLES-for-VMware-SP2-migration'],['SLES-for-VMware-release'],['SUSE-Linux-Enterprise-RT-SP2-migration'],['SUSE-Linux-Enterprise-RT-release'],['SUSE-Manager-Proxy-release'],['SUSE-Manager-Server-1_7-migration'],['SUSE-Manager-Server-release'],['SUSE_SLED-SP1-migration'],['SUSE_SLED-SP2-migration'],['SUSE_SLED-release'],['SUSE_SLES-SP1-migration'],['SUSE_SLES-SP2-migration'],['SUSE_SLES-release'],['SUSE_SLES_SAP-release'],['SatConfig-bootstrap'],['SatConfig-general'],['SputLite'],['StudioOnsite'],['SuSEfirewall2'],['TeX-Guy'],['TeXmacs'],['VFlib3'],['WindowMaker'],['WindowMaker-applets'],['WindowMaker-themes'],['Xalan-c'],['Xerces-c'],['_product'],['_product:SLE-SDK-11-dvd5-SDK-i586'],['_product:SLE-SDK-11-dvd5-SDK-ia64'],['_product:SLE-SDK-11-dvd5-SDK-ppc64'],['_product:SLE-SDK-11-dvd5-SDK-s390x'],['_product:SLE-SDK-11-dvd5-SDK-x86_64'],['_product:SLES-for-VMware-SP2-migration'],['_product:SLES-for-VMware-SP3-migration'],['_product:SLES-for-VMware-cd-MINI-i586'],['_product:SLES-for-VMware-cd-MINI-x86_64'],['_product:SLES-for-VMware-dvd5-DVD-i586'],['_product:SLES-for-VMware-dvd5-DVD-x86_64'],['_product:SLES-for-VMware-release'],['_product:SUSE-Linux-Enterprise-RT-SP2-migration'],['_product:SUSE-Linux-Enterprise-RT-SP3-migration'],['_product:SUSE-Linux-Enterprise-RT-cd-cd-x86_64'],['_product:SUSE-Linux-Enterprise-RT-release'],['_product:SUSE-Manager-Proxy-SP1-migration'],['_product:SUSE-Manager-Proxy-release'],['_product:SUSE-Manager-Server-1_7-migration'],['_product:SUSE-Manager-Server-release'],['_product:SUSE_SLED-SP1-migration'],['_product:SUSE_SLED-SP2-migration'],['_product:SUSE_SLED-SP3-migration'],['_product:SUSE_SLED-cd-MINI-i586'],['_product:SUSE_SLED-cd-MINI-x86_64'],['_product:SUSE_SLED-dvd5-DVD-i586'],['_product:SUSE_SLED-dvd5-DVD-x86_64'],['_product:SUSE_SLED-release'],['_product:SUSE_SLES-SP1-migration'],['_product:SUSE_SLES-SP2-migration'],['_product:SUSE_SLES-SP3-migration'],['_product:SUSE_SLES-cd-MINI-i586'],['_product:SUSE_SLES-cd-MINI-ia64'],['_product:SUSE_SLES-cd-MINI-ppc64'],['_product:SUSE_SLES-cd-MINI-s390x'],['_product:SUSE_SLES-cd-MINI-x86_64'],['_product:SUSE_SLES-dvd5-DVD-i586'],['_product:SUSE_SLES-dvd5-DVD-ia64'],['_product:SUSE_SLES-dvd5-DVD-ppc64'],['_product:SUSE_SLES-dvd5-DVD-s390x'],['_product:SUSE_SLES-dvd5-DVD-x86_64'],['_product:SUSE_SLES-release'],['_product:SUSE_SLES_SAP-SP3-migration'],['_product:SUSE_SLES_SAP-dvd5-DVD-x86_64'],['_product:SUSE_SLES_SAP-release'],['_product:pos-11-cd-cd-i586_x86_64'],['_product:sap-aio-SP2-migration'],['_product:sap-aio-release'],['_product:sap-es-SP2-migration'],['_product:sap-es-release'],['_product:sle-11-SP1-WebYaST-SP1-migration'],['_product:sle-11-SP1-WebYaST-cd-cd-i586_ia64_ppc64_s390x_x86_64'],['_product:sle-11-SP1-WebYaST-release'],['_product:sle-11-SP2-WebYaST-SP3-migration'],['_product:sle-11-SP2-WebYaST-cd-cd-i586_ia64_ppc64_s390x_x86_64'],['_product:sle-11-SP2-WebYaST-release'],['_product:sle-11-desktop-cd-MINI-i586'],['_product:sle-11-desktop-cd-MINI-x86_64'],['_product:sle-11-desktop-dvd5-DVD-i586'],['_product:sle-11-desktop-dvd5-DVD-x86_64'],['_product:sle-11-sap-aio-dvd5-DVD-x86_64'],['_product:sle-11-sap-es-dvd5-DVD-x86_64'],['_product:sle-11-server-cd-MINI-i586'],['_product:sle-11-server-cd-MINI-ia64'],['_product:sle-11-server-cd-MINI-ppc64'],['_product:sle-11-server-cd-MINI-s390x'],['_product:sle-11-server-cd-MINI-x86_64'],['_product:sle-11-server-dvd5-DVD-i586'],['_product:sle-11-server-dvd5-DVD-ia64'],['_product:sle-11-server-dvd5-DVD-ppc64'],['_product:sle-11-server-dvd5-DVD-s390x'],['_product:sle-11-server-dvd5-DVD-x86_64'],['_product:sle-ha-geo-SP3-migration'],['_product:sle-ha-geo-cd-cd-s390x_x86_64'],['_product:sle-ha-geo-release'],['_product:sle-hae-SP1-migration'],['_product:sle-hae-SP2-migration'],['_product:sle-hae-SP3-migration'],['_product:sle-hae-cd-cd-i586'],['_product:sle-hae-cd-cd-ia64'],['_product:sle-hae-cd-cd-ppc64'],['_product:sle-hae-cd-cd-s390x'],['_product:sle-hae-cd-cd-x86_64'],['_product:sle-hae-release'],['_product:sle-pos-SP1-migration'],['_product:sle-pos-SP2-migration'],['_product:sle-pos-SP3-migration'],['_product:sle-pos-cd-cd-i586_x86_64'],['_product:sle-pos-release'],['_product:sle-sdk-SP1-migration'],['_product:sle-sdk-SP2-migration'],['_product:sle-sdk-SP3-migration'],['_product:sle-sdk-dvd5-SDK-i586'],['_product:sle-sdk-dvd5-SDK-ia64'],['_product:sle-sdk-dvd5-SDK-ppc64'],['_product:sle-sdk-dvd5-SDK-s390x'],['_product:sle-sdk-dvd5-SDK-x86_64'],['_product:sle-sdk-release'],['_product:sle-slms-1_1-migration'],['_product:sle-slms-1_2-migration'],['_product:sle-slms-cd-cd-x86_64'],['_product:sle-slms-release'],['_product:sle-smt-SP2-migration'],['_product:sle-smt-SP3-migration'],['_product:sle-smt-cd-cd-i586_s390x_x86_64'],['_product:sle-smt-release'],['_product:sle-studioonsite-SP1-migration'],['_product:sle-studioonsite-release'],['_product:slms-11-cd-cd-x86_64'],['_product:smt-11-cd-cd-i586_s390x_x86_64'],['_product:studioonsite-1.1-cd-cd-x86_64'],['_product:suse-cloud-SP1-migration'],['_product:suse-cloud-release'],['_product:suse-manager-proxy-1.2-cd-cd-x86_64'],['_product:suse-manager-server-1.2-cd-cd-x86_64'],['a2ps'],['a2ps-perl-ja'],['aaa_base'],['aalib'],['abuild'],['accerciser'],['acct'],['acl'],['acpid'],['acroread'],['acroread-cmaps'],['acroread_ja'],['adaptec-firmware'],['adns'],['aelfred'],['agfa-fonts'],['aide'],['akonadi-runtime'],['alacarte'],['alsa'],['alsa-firmware'],['alsa-oss'],['alsa-plugins'],['alsa-tools'],['alsa-utils'],['amanda'],['amarok'],['amavisd-new'],['ami'],['ant'],['ant-antlr'],['ant-contrib'],['anthy'],['antlr'],['antlr-bootstrap'],['apache-portlet-1_0-api'],['apache-xmlrpc3'],['apache2'],['apache2-mod_apparmor'],['apache2-mod_auth_kerb'],['apache2-mod_auth_ntlm_winbind'],['apache2-mod_fcgid'],['apache2-mod_jk'],['apache2-mod_macro'],['apache2-mod_mono'],['apache2-mod_mono-addon'],['apache2-mod_perl'],['apache2-mod_python'],['apache2-mod_security2'],['apache2-mod_tidy'],['apache2-mod_wsgi'],['apache2-slms'],['apcupsd'],['apel'],['apel-xemacs'],['apparmor'],['apparmor-admin_en'],['apparmor-dbus'],['apparmor-docs'],['apparmor-parser'],['apparmor-profile-editor'],['apparmor-profiles'],['apparmor-utils'],['apparmorapplet-gnome'],['apport'],['apport-crashdb-sle'],['apt'],['aqbanking'],['argus'],['argus-client'],['arptables'],['arpwatch'],['arpwatch-ethercodes'],['arts'],['asciidoc'],['ash'],['asm'],['asm2'],['aspell'],['aspell-dictionaries'],['aspell-en'],['at'],['at-spi'],['atftp'],['ath3k'],['ati-fglrxG01'],['ati-fglrxG02'],['atk'],['atmel-firmware'],['attr'],['audiofile'],['audit'],['audit-secondary'],['auditlog-keeper'],['auditlog-keeper-rdbms'],['auditlog-keeper-spacewalk-validator'],['auditlog-keeper-syslog'],['auditlog-keeper-xmlout'],['augeas'],['autoconf'],['autoconf-el'],['autoconf213'],['autofs'],['automake'],['automoc4'],['autoyast2'],['avahi'],['avahi-glib2'],['avahi-mono'],['avahi-qt4'],['avmailgate'],['awesfx'],['axis'],['babl'],['backup-manager'],['baekmuk'],['banshee-1'],['banshee-1-novell-aac'],['bash'],['batik'],['bc'],['bcel'],['bdfresize'],['bea-stax'],['beagle'],['beagle-index'],['beagle-quickfinder'],['berkeleydb'],['bigsister'],['bin86'],['bind'],['bing'],['binutils'],['biosdevname'],['bison'],['bitstream-vera'],['blktrace'],['blocxx'],['blocxx-doc'],['blt'],['blueprint-cursor-theme'],['bluez'],['bluez-firmware'],['bluez-gnome'],['bluez-gstreamer'],['bluez-hcidump'],['bogofilter'],['boinc-client'],['bonnie'],['bonnie++'],['boo'],['boost'],['boost-jam'],['bootcycle'],['booth'],['bootsplash'],['bootsplash-branding-SLEPOS'],['bootsplash-branding-SLES-for-VMware'],['bootsplash-branding-openSUSE'],['bpg-fonts'],['branding-SLED'],['branding-SLES'],['brasero'],['bridge-utils'],['brocade-bfa'],['brocade-bna'],['brocade-firmware'],['brp-check-suse'],['bsdtar'],['bsdtar_2_8_4'],['bsf'],['bsh2'],['btrfs'],['btrfsprogs'],['bug-buddy'],['build'],['bundle-lang-common'],['bundle-lang-gnome'],['bundle-lang-kde'],['bundle-lang-other'],['busybox'],['bzip2'],['bzr'],['cabextract'],['cachefilesd'],['cadaver'],['cairo'],['cairomm'],['calamaris'],['canna'],['cannadic'],['ccache'],['cdk'],['cdparanoia'],['cdrdao'],['cedict'],['cellwriter'],['celt'],['ceph'],['ceph-kmp'],['certification-sles-eal4'],['cft'],['cglib-nohook'],['chasen'],['check'],['check-create-certificate'],['checkmedia'],['checkpolicy'],['cheese'],['chkrootkit'],['chmlib'],['chmsee'],['chromium-browser'],['chrpath'],['cifs-utils'],['cim-schema'],['ckermit'],['clamav'],['clamsap'],['classpathx-mail'],['clicfs'],['cloog'],['cloud-init'],['clucene-core'],['cluster-glue'],['cluster-network'],['clutter'],['clutter-gtk'],['cm-unicode'],['cmake'],['cmake-gui_2_8_4'],['cmake_2_8_4'],['cmirrord'],['cmpi-bindings'],['cmpi-provider-register'],['cmpi-pywbem-base'],['cmpi-pywbem-power-management'],['cmpi-pywbem-software'],['cmsfs'],['cobbler'],['collectd'],['colorblind'],['compartm'],['compat'],['compat-ath9k'],['compat-dapl'],['compat-openssl097g'],['compat-wireless'],['compface'],['compiz'],['compiz-bcop'],['compiz-emerald'],['compiz-emerald-themes'],['compiz-fusion-plugins-extra'],['compiz-fusion-plugins-main'],['compiz-manager'],['compiz-plugins-dmx'],['compizconfig-settings-manager'],['computertemp'],['conduit'],['conglomerate'],['conntrack-tools'],['contact-lookup-applet'],['convmv'],['coolkey'],['coreutils'],['corosync'],['couchdb'],['cpio'],['cpufrequtils'],['cpupower'],['cpuset'],['cracklib'],['cracklib-dict-full'],['crash'],['crda'],['createrepo'],['crimson'],['crmsh'],['cron'],['cross-alpha-binutils'],['cross-arm-binutils'],['cross-avr-binutils'],['cross-avr-gcc'],['cross-avr-gcc43'],['cross-hppa-binutils'],['cross-hppa-gcc-icecream-backend'],['cross-hppa64-binutils'],['cross-i386-binutils'],['cross-i386-gcc-icecream-backend'],['cross-ia64-binutils'],['cross-ia64-gcc-icecream-backend'],['cross-mips-binutils'],['cross-ppc-binutils'],['cross-ppc-gcc-icecream-backend'],['cross-ppc64-binutils'],['cross-ppc64-gcc-icecream-backend'],['cross-s390-binutils'],['cross-s390-gcc-icecream-backend'],['cross-s390x-binutils'],['cross-s390x-gcc-icecream-backend'],['cross-sh4-binutils'],['cross-sparc-binutils'],['cross-spu-binutils'],['cross-spu-gcc'],['cross-spu-gcc-static'],['cross-spu-newlib'],['cross-spu-newlib-headers'],['cross-x86_64-binutils'],['cross-x86_64-gcc-icecream-backend'],['crosscrash'],['crowbar'],['crowbar-barclamp-ceph'],['crowbar-barclamp-crowbar'],['crowbar-barclamp-deployer'],['crowbar-barclamp-glance'],['crowbar-barclamp-keystone'],['crowbar-barclamp-network'],['crowbar-barclamp-nova'],['crowbar-barclamp-nova_dashboard'],['crowbar-barclamp-provisioner'],['crowbar-barclamp-swift'],['cryptconfig'],['cryptix'],['cryptix-asn1'],['cryptsetup'],['crystalhd'],['crystalhd-libs'],['cscope'],['csync'],['csync2'],['ctags'],['ctcs2'],['ctdb'],['culmus'],['cups'],['cups-autoconfig'],['cups-backends'],['cups-drivers'],['cupsddk'],['curl'],['cvs'],['cvs2svn'],['cvsps'],['cx_Oracle'],['cyrus-imapd'],['cyrus-sasl'],['cyrus-sasl-saslauthd'],['dante'],['dapl'],['dapl-debug'],['darts'],['dasher'],['db1'],['db43'],['dbench'],['dbsplit-tools'],['dbus-1'],['dbus-1-glib'],['dbus-1-mono'],['dbus-1-python'],['dbus-1-qt3'],['dbus-1-x11'],['dcbd'],['dcraw'],['ddclient'],['ddd'],['ddrescue'],['dds2tar'],['ddskk'],['deb'],['dejagnu'],['dejavu'],['delayacct-utils'],['deltafs'],['deltarpm'],['derby'],['deskbar-applet'],['desktop-data-SLED'],['desktop-data-SLES-for-VMware'],['desktop-data-openSUSE'],['desktop-file-utils'],['desktop-translations'],['devhelp'],['device-mapper'],['devilspie'],['dhcp'],['dhcp-tools'],['dhcpcd'],['dhcpv6'],['dia'],['dialog'],['dice'],['dicts'],['diffstat'],['diffutils'],['digikam'],['digikam-doc'],['ding-libs'],['dirac'],['dirdiff'],['dirmngr'],['djvulibre'],['dmapi'],['dmraid'],['dmxviewer'],['dnsmasq'],['doc-gnu-ko'],['docbook-dsssl-stylesheets'],['docbook-toys'],['docbook-utils'],['docbook-xml-website'],['docbook-xsl-stylesheets'],['docbook2x'],['docbook5-xsl-stylesheets'],['docbook_3'],['docbook_4'],['docbook_5'],['dojo'],['dom2-core-tests'],['dom4j'],['dos2unix'],['dosfstools'],['dosutils'],['dotconf'],['doxygen'],['doxywizard'],['drac'],['drbd'],['drbd-kmp'],['dtc'],['dummy-release'],['dump'],['dvd+rw-tools'],['dvi2tty'],['dwarfextract'],['e2fsprogs'],['e3'],['eID-belgium'],['eIDconfig-belgium'],['eb'],['ebtables'],['ec2-api-tools'],['ecj'],['ecj-bootstrap'],['eclipse'],['eclipse-archdep'],['ecryptfs-utils'],['ed'],['edict'],['editarea'],['eel'],['efibootmgr'],['efont-unicode'],['eiciel'],['eject'],['ekiga'],['elfutils'],['elilo'],['emacs'],['emacs-auctex'],['empathy'],['enca'],['enchant'],['engdic'],['engine_pkcs11'],['enic-kmp'],['enscript'],['eog'],['epiphany'],['epiphany-branding-SLED'],['epiphany-branding-openSUSE'],['epiphany-extensions'],['epydoc'],['eric'],['erlang'],['esound'],['espeak'],['ethtool'],['euca2ools'],['evince'],['evoldap2-client'],['evolution'],['evolution-data-server'],['evolution-ews'],['evolution-exchange'],['evolution-mapi-provider'],['evolution-mono-providers'],['evolution-sharp'],['evolution-webcal'],['exempi'],['exiv2'],['expat'],['expect'],['ext4-writeable'],['ext4dev'],['f-spot'],['f2c'],['facter'],['fam'],['farsifonts'],['farsight'],['farsight2'],['fastjar'],['fbset'],['fdupes'],['felix-osgi-core'],['fence-agents'],['festival'],['fetchmail'],['ffado'],['ffado-mixer'],['fftw'],['fftw3'],['file'],['file-roller'],['filesystem'],['fillup'],['filters'],['findutils'],['finger'],['firewire'],['firmwarekit'],['flac'],['flash-player'],['flex'],['flex-old'],['flickrnet'],['flim'],['flim-xemacs'],['fltk'],['fnic-kmp'],['fontconfig'],['fontforge'],['fonts-arabic'],['fonts-config'],['fonts-thai'],['fonts-thryomanes'],['foomatic-filters'],['fop'],['fping'],['fpswa'],['free-ttf-fonts'],['freefont'],['freeglut'],['freeradius-client'],['freeradius-server'],['freerdp'],['freetype'],['freetype2'],['fribidi'],['ft2demos'],['ftgl'],['ftp'],['fuse'],['fvwm2'],['fwnn'],['fxload'],['galago-daemon'],['galago-sharp'],['gammu'],['gau'],['gawk'],['gcalctool'],['gcc'],['gcc33'],['gcc41'],['gcc43'],['gcc45'],['gcc46'],['gconf-editor'],['gconf2'],['gconf2-branding-SLED'],['gconf2-branding-SLES'],['gconf2-branding-SLES-for-VMware'],['gconf2-branding-hp-cnb'],['gconf2-branding-openSUSE'],['gconfmm'],['gd'],['gdata-sharp'],['gdb'],['gdbm'],['gdk-pixbuf'],['gdm'],['gecko-sharp2'],['gecode'],['gedit'],['gegl'],['gentium'],['geoclue'],['geronimo-specs'],['gettext-csharp'],['gettext-java'],['gettext-runtime'],['gfs2'],['gftp'],['gfxboot'],['gfxboot-branding-SLEPOS'],['ggz'],['ggz-client-libs'],['ghex'],['ghostscript-cjk'],['ghostscript-library'],['ghostscript-mini'],['giflib'],['gimp'],['gimp-branding-SLED'],['gimp-help'],['gio-sharp'],['gir-repository'],['git'],['gjdoc'],['gjiten'],['gkeyfile-sharp'],['gkrellm'],['glade'],['glade3'],['gle'],['glib'],['glib2'],['glib2-branding-openSUSE'],['glibc'],['glibc.i686'],['glibmm2'],['glitz'],['gltt'],['gmime'],['gmime-2_4'],['gmp'],['gnet'],['gnokii'],['gnome-applets'],['gnome-audio'],['gnome-backgrounds'],['gnome-bluetooth'],['gnome-certauth'],['gnome-common'],['gnome-control-center'],['gnome-desktop'],['gnome-desktop-sharp2'],['gnome-do'],['gnome-do-plugins'],['gnome-doc-utils'],['gnome-docker'],['gnome-games'],['gnome-icon-theme'],['gnome-js-common'],['gnome-keyring'],['gnome-keyring-sharp'],['gnome-libs'],['gnome-mag'],['gnome-main-menu'],['gnome-media'],['gnome-menus'],['gnome-menus-branding-SLED'],['gnome-menus-branding-openSUSE'],['gnome-mime-data'],['gnome-mount'],['gnome-netstatus'],['gnome-nettool'],['gnome-packagekit'],['gnome-panel'],['gnome-patch-translation'],['gnome-phone-manager'],['gnome-pilot'],['gnome-power-manager'],['gnome-ppp'],['gnome-python-desktop'],['gnome-screensaver'],['gnome-session'],['gnome-settings-daemon'],['gnome-sharp2'],['gnome-speech'],['gnome-spell2'],['gnome-system-monitor'],['gnome-terminal'],['gnome-themes'],['gnome-user-share'],['gnome-utils'],['gnome-vfs2'],['gnome-vfsmm'],['gnome-web-photo'],['gnome2-user-docs'],['gnopernicus'],['gnu-crypto'],['gnu-efi'],['gnu-getopt'],['gnu-jaf'],['gnu-regexp'],['gnucash'],['gnucash-docs'],['gnuchess'],['gnuplot'],['gnutls'],['gob2'],['gobject-introspection'],['goffice'],['gok'],['goocanvas'],['google-perftools'],['goom2k4'],['gpart'],['gperf'],['gpg2'],['gpgme'],['gphoto'],['gphotofs'],['gpm'],['gpsd'],['gq'],['graphviz'],['graphviz-plugins'],['grep'],['groff'],['grub'],['grubby'],['gsf-sharp'],['gsl'],['gssdp'],['gst-fluendo-mp3'],['gst-novell-aac'],['gst-novell-qtdemux'],['gst-novell-qtmux'],['gstreamer-0_10'],['gstreamer-0_10-doc'],['gstreamer-0_10-plugin-crystalhd'],['gstreamer-0_10-plugins-bad'],['gstreamer-0_10-plugins-base'],['gstreamer-0_10-plugins-farsight'],['gstreamer-0_10-plugins-good'],['gstreamer-0_10-plugins-v4l'],['gsynaptics'],['gthumb'],['gtk'],['gtk-doc'],['gtk-sharp-beans'],['gtk-sharp2'],['gtk-vnc'],['gtk1-compat'],['gtk2'],['gtk2-branding-SLED'],['gtk2-branding-SLES-for-VMware'],['gtk2-engine-murrine'],['gtk2-engines'],['gtk2-metatheme-sonar'],['gtk2-theme-SLED'],['gtk2-theme-SLES-for-VMware'],['gtk2-theme-openSUSE'],['gtk2-themes'],['gtkglext'],['gtkhtml2'],['gtkmm2'],['gtksourceview'],['gtksourceview-sharp2'],['gtksourceview18'],['gtkspell'],['gucharmap'],['gudev-sharp'],['guile'],['gupnp'],['gupnp-av'],['gupnp-igd'],['gv'],['gvfs'],['gwenhywfar'],['gwenview'],['gxdview'],['gypsy'],['gzip'],['h2'],['hal'],['hal-doc'],['handedict'],['haveged'],['hawk'],['hdparm'],['heartbeat'],['heartbeat-common'],['heartbeat-resources'],['help2man'],['hex'],['hfsutils'],['hicolor-icon-theme'],['hippo-canvas'],['hk_classes'],['howto'],['hp-cnb-user'],['hp-cnb-user-doc-becker'],['hp-cnb-user-doc-federer'],['hp-cnb-user-doc-generic'],['hp-cnb-user-doc-gerrard'],['hp-cnb-user-doc-graf'],['hp-cnb-user-doc-henin'],['hp-cnb-user-doc-murray'],['hp-cnb-user-doc-nadal'],['hp-cnb-user-doc-roddick'],['hp-cnb-user-doc-ronaldo'],['hp-cnb-user-doc-safina'],['hp-cnb-user-doc-sampras'],['hp-cnb-user-doc-williams'],['hp-cnb-user-video'],['hp-cnb-user-video-extra'],['hp-documentation-bnb'],['hp-documentation-nano'],['hp-documentation-sbso'],['hp-drive-guard'],['hp-huddle-desktop'],['hplip'],['hplip3'],['hsqldb'],['ht2html'],['htdig'],['html-dtd'],['html2ps'],['html2text'],['htmldoc'],['hunspell'],['hwinfo'],['hyena'],['hyper-v'],['i2c-tools'],['i386-rescue'],['i4l-base'],['ia32el'],['ib-bonding'],['ibmrtpkgs'],['ibsim'],['ibutils'],['icecream'],['icecream-monitor'],['icecream-native-backend'],['icedtea-web'],['icewm'],['icewm-lite'],['icmpinfo'],['icom-firmware'],['icon-naming-utils'],['icu'],['id3lib'],['identity-abstraction'],['idutils'],['ifolder3'],['ifplugd'],['iftop'],['ikvm'],['imap'],['imgen'],['imhangul'],['imlib'],['imlib2'],['indent'],['indic-fonts'],['infiniband-diags'],['info2html'],['initviocons'],['inkscape'],['inn'],['input-utils'],['insserv'],['inst-source-utils'],['installation-images'],['intel-SINIT'],['intel-iamt'],['intel-iamt-heci'],['intlfnts'],['intltool'],['iotop'],['ipadic'],['ipmitool'],['ipod-sharp'],['ipoibtools'],['iproute2'],['iprutils'],['ipsec-tools'],['iptables'],['iptraf'],['iputils'],['ipvsadm'],['ipw-firmware'],['ipxrip'],['irda'],['irqbalance'],['isapnp'],['iscsitarget'],['isns'],['iso-codes'],['iso_ent'],['isorelax'],['ispell'],['ispell-bulgarian'],['ispell-hungarian'],['ispell-slovak'],['itcl'],['itrace'],['ivman'],['iw'],['iwl1000-ucode'],['iwl3945-ucode'],['iwl4965-ucode'],['iwl5000-ucode'],['iwl5150-ucode'],['iwl6000-ucode'],['iwl6000g2-ucode'],['iwlagn'],['iwlagn-2-6-27'],['jabberd'],['jack'],['jakarta-commons-beanutils'],['jakarta-commons-codec'],['jakarta-commons-collections'],['jakarta-commons-daemon'],['jakarta-commons-dbcp'],['jakarta-commons-digester'],['jakarta-commons-discovery'],['jakarta-commons-el'],['jakarta-commons-fileupload'],['jakarta-commons-httpclient3'],['jakarta-commons-io'],['jakarta-commons-lang'],['jakarta-commons-launcher'],['jakarta-commons-logging'],['jakarta-commons-modeler'],['jakarta-commons-pool'],['jakarta-commons-validator'],['jakarta-taglibs-standard'],['jarjar'],['jarnal'],['jasper'],['java-1_4_2-ibm'],['java-1_4_2-ibm-sap'],['java-1_5_0-bea'],['java-1_5_0-gcj-compat'],['java-1_6_0-bea'],['java-1_6_0-ibm'],['java-1_6_0-openjdk'],['java-1_6_0-sun'],['java-1_7_0-ibm'],['java_cup'],['javacc'],['javazic'],['jaxen'],['jaxen-bootstrap'],['jdepend'],['jdom'],['jedit'],['jessie'],['jfsutils'],['jing'],['jlex'],['jline'],['jmock'],['joe'],['jpackage-utils'],['jpam'],['jpeg'],['json-glib'],['jtidy'],['jtools'],['junit'],['junitperf'],['jython'],['k3b'],['kaffeine'],['kakasi'],['kasumi'],['kaveau'],['kbd'],['kbluetooth'],['kbuild'],['kcm_gtk'],['kdbg'],['kde-susetranslations'],['kde3-i18n'],['kde4-amarok'],['kde4-filesystem'],['kde4-kcm_gtk'],['kde4-kerry'],['kde4-kio_beagle'],['kde4-kiosktool'],['kde4-konqueror-plugins'],['kde4-kupdateapplet'],['kde4-l10n'],['kde4-plasma-addons'],['kde4-plasmoid-quickaccess'],['kde4-plasmoid-quicklauncher'],['kdeaccessibility4'],['kdeaccessibility4-icons'],['kdeaddons3'],['kdeartwork3'],['kdeartwork4'],['kdeartwork4-noarch'],['kdebase3'],['kdebase3-SuSE'],['kdebase4'],['kdebase4-SLED'],['kdebase4-SLES-for-VMware'],['kdebase4-openSUSE'],['kdebase4-runtime'],['kdebase4-session'],['kdebase4-wallpapers'],['kdebase4-workspace'],['kdebindings3'],['kdebindings3-java'],['kdebindings3-javascript'],['kdebindings4'],['kdebluetooth'],['kdebluetooth4'],['kdeedu4'],['kdeedu4-noarch'],['kdegames3'],['kdegames4'],['kdegames4-carddecks'],['kdegraphics3'],['kdegraphics4'],['kdelibs3'],['kdelibs3-devel-doc'],['kdelibs4'],['kdelibs4-experimental'],['kdemultimedia3'],['kdemultimedia4'],['kdenetwork4'],['kdepim3'],['kdepim4'],['kdepim4-runtime'],['kdepimlibs4'],['kdesdk3'],['kdesdk4'],['kdetoys4'],['kdetv'],['kdeutils3'],['kdeutils4'],['kdevelop3'],['kdewebdev3'],['kdirstat'],['kdump'],['kernel-debug'],['kernel-default'],['kernel-desktop'],['kernel-docs'],['kernel-docs-rt'],['kernel-dummy'],['kernel-ec2'],['kernel-firmware'],['kernel-installation-tapeipl'],['kernel-kdump'],['kernel-pae'],['kernel-ppc64'],['kernel-ps3'],['kernel-rt'],['kernel-rt_debug'],['kernel-rt_pae'],['kernel-rt_timing'],['kernel-rt_trace'],['kernel-s390'],['kernel-source'],['kernel-source-rt'],['kernel-syms'],['kernel-syms-rt'],['kernel-trace'],['kernel-vanilla'],['kernel-vmi'],['kernel-xen'],['kerneloops'],['kerry'],['kexec-tools'],['keyutils'],['killerd'],['kinput2'],['kio_beagle'],['kio_ipodslave'],['kio_slp'],['kiosktool'],['kipi-plugins'],['kiwi'],['kiwi-instsource-plugins-SLE-11-SP2'],['kiwi-instsource-plugins-openSUSE-11-0'],['kiwi-instsource-plugins-openSUSE-11-1'],['kiwi-instsource-plugins-openSUSE-11-2'],['koffice'],['koffice-i18n'],['kompozer'],['konkretcmpi'],['konqueror-plugins'],['konversation'],['kpowersave'],['krb5'],['krb5-doc'],['krb5-plugin-preauth-pkinit-nss'],['krb5-plugins'],['krb5-ticket-watcher'],['krecord'],['krusader'],['kscpm'],['ksh'],['ksymoops'],['ktoblzcheck'],['ktorrent'],['kvm'],['kvm-kmp'],['ladspa'],['ladspa-devel'],['lapack'],['laptop-mode-tools'],['latex2html'],['launchmanager'],['lcms'],['lcrash'],['ldapcpplib'],['ldtp'],['ledmon'],['less'],['lha'],['lib3ds'],['libEMF'],['libHBAAPI2'],['libHX'],['libQtTapioca0'],['libQtTelepathy0'],['libQtWebKit-devel'],['libaio'],['libakode'],['libamso-rdmav2'],['libao'],['libapparmor1'],['libapr-util1'],['libapr1'],['libapreq2-3'],['libart_lgpl'],['libass'],['libassuan'],['libatomic-ops-devel'],['libavc1394'],['libbeagle'],['libbitmask'],['libblocxx4'],['libbonobo'],['libbonoboui'],['libbsr0'],['libbtctl'],['libcaca'],['libcanberra'],['libcap'],['libcap-ng'],['libcap1'],['libcares2'],['libcdaudio'],['libcddb'],['libcdio'],['libcdio-mini'],['libcgroup1'],['libchamplain'],['libchewing'],['libchipcard3'],['libcmpiutil'],['libcompizconfig'],['libconfuse0'],['libcppunit-1_12-0'],['libcpuset'],['libcroco'],['libcxgb3-rdmav2'],['libcxgb4-rdmav2'],['libdaemon'],['libdatrie0'],['libdb-4_5'],['libdb_java-4_5'],['libdbi'],['libdbus-1-qt3-0'],['libdc1394'],['libdfp'],['libdiscid'],['libdlm'],['libdmxview'],['libdnet'],['libdrm'],['libdv'],['libdvdnav'],['libdvdread'],['libdwarf'],['libeXosip2'],['libedit'],['libehca-rdmav2'],['libeigen'],['libeigen2-devel'],['libelf0'],['liberation-fonts'],['libesmtp'],['libevent'],['libevtlog'],['libexif'],['libffi43'],['libflaim'],['libflashsupport'],['libfprint'],['libfreebob'],['libgadu'],['libgail-gnome'],['libgalago'],['libgcj33'],['libgcj41'],['libgcj43'],['libgcrypt'],['libgda'],['libgda3'],['libgdata'],['libgdiplus0'],['libglade2'],['libglademm'],['libgme'],['libgmm++-devel'],['libgnome'],['libgnomecanvas'],['libgnomecanvasmm'],['libgnomecups'],['libgnomedb'],['libgnomekbd'],['libgnomemm'],['libgnomeprint'],['libgnomeprintui'],['libgnomesu'],['libgnomeui'],['libgnomeuimm'],['libgpg-error'],['libgphoto2'],['libgpod'],['libgpod3'],['libgsf'],['libgsm'],['libgssglue'],['libgtkhtml'],['libgtop'],['libgweather'],['libhangul'],['libhbalinux2'],['libhugetlbfs'],['libibcm'],['libibcommon'],['libibmad'],['libibmad1'],['libibumad'],['libibumad1'],['libibverbs'],['libica-1_3_9'],['libica-2_0_2'],['libica-2_1_0'],['libical'],['libid3tag'],['libidl'],['libidn'],['libiec61883'],['libieee1284'],['libimobiledevice'],['libiniparser'],['libipathverbs'],['libiptcdata'],['libjingle'],['libkate'],['libkdcraw3'],['libkexiv2-3'],['libkipi0'],['libksba'],['liblazy1'],['liblouis'],['libltdl3'],['libmal'],['libmal1'],['libmcrypt'],['libmemcache'],['libmemcached'],['libmikmod'],['libmlx4-rdmav2'],['libmm14'],['libmng'],['libmodplug'],['libmpcdec'],['libmsn'],['libmspack'],['libmthca-rdmav2'],['libmtp'],['libmusicbrainz'],['libmusicbrainz3'],['libnes-rdmav2'],['libnet'],['libnetfilter_conntrack'],['libnfnetlink'],['libnice'],['libnjb'],['libnl'],['libnotify'],['libnscd'],['libofa'],['libofx'],['libogg'],['liboil'],['libopenraw'],['libopensync'],['libopensync-plugin-evolution2'],['libopensync-plugin-file'],['libopensync-plugin-gnokii'],['libopensync-plugin-irmc'],['libopensync-plugin-palm'],['libopensync-plugin-syncml'],['liboping0'],['libosip2'],['libotf'],['libotr'],['libp11'],['libpcap'],['libpciaccess0'],['libpfm'],['libplist'],['libpng12-0'],['libpqxx'],['libproxy'],['libproxy-plugins'],['libpst'],['libpt2'],['libqca2'],['libqdialogsolver1'],['libqimageblitz4'],['libqt4'],['libqt4-devel-doc'],['libqt4-devel-doc-data'],['libqt4-sql-plugins'],['libqtpod'],['libquicktime'],['libraw1394'],['librdmacm'],['libreadline-java'],['libreiserfs'],['librelp'],['libreoffice'],['libreoffice-branding-SLED'],['libreoffice-branding-upstream'],['libreoffice-converter'],['libreoffice-help-en-US'],['libreoffice-help-group1'],['libreoffice-help-group2'],['libreoffice-help-group3'],['libreoffice-help-group4'],['libreoffice-help-group5'],['libreoffice-hyphen'],['libreoffice-icon-themes'],['libreoffice-l10n'],['libreoffice-languagetool'],['libreoffice-openclipart'],['libreoffice-templates-de'],['libreoffice-templates-en'],['libreoffice-templates-labels'],['libreoffice-templates-presentation-layouts'],['libreoffice-thesaurus'],['librpcsecgss'],['librsvg'],['librsync'],['librtas'],['libsamplerate'],['libsatsolver'],['libsdp'],['libselinux'],['libselinux-bindings'],['libsemanage'],['libsensors3'],['libsepol'],['libservicelog'],['libsexy'],['libshout'],['libsidplay1'],['libsigc++2'],['libslab'],['libsmbios'],['libsmi'],['libsndfile'],['libsndfile-progs'],['libsoup'],['libspe2'],['libspectre'],['libssh'],['libssh2_org'],['libstatgrab6'],['libstroke'],['libsynaptics'],['libsyncml0'],['libtalloc1'],['libtasn1'],['libtcnative-1-0'],['libtelepathy'],['libtevent'],['libthai'],['libtheora'],['libtimidity'],['libtirpc'],['libtool'],['libtunepimp'],['libtwin0'],['libunique'],['libunwind'],['libusb'],['libusb-1_0'],['libustr'],['libv4l'],['libvdpau'],['libvirt'],['libvirt-cim'],['libvisual'],['libvisual-plugins'],['libvoikko'],['libvorbis'],['libvpd2'],['libvpx'],['libwebkit'],['libwebkit1_0'],['libwmf'],['libwnck'],['libwpd'],['libwpg'],['libwps'],['libx86'],['libxcrypt'],['libxfce4mcs'],['libxfce4util'],['libxfcegui4'],['libxklavier'],['libxml'],['libxml++'],['libxml2'],['libxml2-python'],['libxslt'],['libxslt-python'],['libyajl'],['libyaml'],['libyui-bindings'],['libzfcphbaapi0'],['libzio'],['libzip1'],['libzypp'],['libzypp-bindings'],['libzypp-testsuite-tools'],['libzypp-tools'],['licenses'],['liferea'],['lighttpd'],['lilo'],['limal'],['limal-apparmor-control'],['limal-apparmor-notifications'],['limal-apparmor-reporting'],['limal-ca-mgm'],['limal-devtools'],['limal-nfs-server'],['limal-runlevel'],['links'],['linphone'],['linux-atm'],['linux-kernel-headers'],['linux32'],['linuxrc'],['lio-utils'],['lirc'],['lirc-kernel'],['lklug'],['lksctp-tools'],['lldpad'],['llvm'],['log4c'],['log4j'],['log4j-mini'],['log4net'],['login'],['logrotate'],['logwatch'],['loudmouth'],['lpdfilter'],['lprng'],['lpsolve'],['lsb'],['lsb-appchk-webui'],['lsb-buildenv'],['lsb-misctest'],['lsb-release'],['lsof'],['lsscsi'],['lsvpd'],['ltp'],['ltrace'],['lttng-modules'],['lua'],['lucene'],['lukemftp'],['lv'],['lvm2'],['lvm2-clvm'],['lxc'],['lynx'],['lyx'],['lzma'],['lzma-alpha-devel'],['lzo'],['m17n-contrib'],['m17n-db'],['m17n-lib'],['m4'],['mailman'],['mailx'],['make'],['makedumpfile'],['malaga'],['malaga-suomi'],['man'],['man-pages'],['man-pages-cs'],['man-pages-it'],['man-pages-ja'],['man-pages-ko'],['man-pages-pl'],['man-pages-posix'],['man-pages-ru'],['man-pages-supplement'],['man-pages-zh_CN'],['manufacturer-PPDs'],['master-boot-code'],['mc'],['mcelog'],['mcstrans'],['mdadm'],['mdbtools'],['meanwhile'],['media-player-info'],['memcached'],['memtest86+'],['mercurial'],['mergeant'],['metacity'],['metacity-themes'],['metamail'],['mgetty'],['mgopen-fonts'],['mhash'],['mhtml-firefox'],['microcode_ctl'],['mikachan-fonts'],['mingetty'],['minicom'],['mipv6d'],['mirror'],['mjpegtools'],['mkinitrd'],['mlterm'],['module-init-tools'],['mono-addins'],['mono-addon-basic'],['mono-addon-core'],['mono-addon-debugger'],['mono-addon-libgdiplus0'],['mono-addon-xsp'],['mono-basic'],['mono-biarchcompat'],['mono-core'],['mono-debugger'],['mono-kde4'],['mono-tools'],['mono-zeroconf'],['monodevelop'],['monodevelop-database'],['monodevelop-debugger-gdb'],['monodevelop-debugger-mdb'],['monodevelop-java'],['monodevelop-python'],['monodoc-core'],['monotools-addon-server'],['monovs-addon-server'],['monsoon'],['moonlight'],['moonshine'],['mouseemu'],['mousetweaks'],['mozilla-kde4-integration'],['mozilla-nspr'],['mozilla-nss'],['mozilla-xulrunner181'],['mozilla-xulrunner190'],['mozilla-xulrunner191'],['mozilla-xulrunner192'],['mpc'],['mpfr'],['mpi-selector'],['mpich'],['mpitests'],['mpitests-mvapich'],['mpitests-mvapich2'],['mpt-firmware'],['msi-wmi-kmp'],['mstflint'],['msynctool'],['mt_st'],['mtools'],['mtx'],['multi-update-tools'],['multipath-tools'],['multisync-gui'],['mutt'],['mvapich'],['mvapich2'],['mx4j'],['mxml'],['myspell-dictionaries'],['mysql'],['mysql-connector-java'],['nabi'],['nagios'],['nagios-nrpe'],['nagios-nsca'],['nagios-plugins'],['nagios-plugins-nis'],['nagios-plugins-rsync'],['nagios-plugins-zypper'],['namazu'],['nant'],['nasm'],['nautilus'],['nautilus-cd-burner'],['nautilus-group'],['nautilus-ifolder3'],['nautilus-open-terminal'],['nautilus-search-tool'],['nautilus-sendto'],['nautilus-share'],['nc6'],['ncftp'],['ncpfs'],['ncurses'],['ndesk-dbus'],['ndesk-dbus-glib'],['ndiswrapper'],['neon'],['net-snmp'],['net-tools'],['netacct'],['netatalk'],['netcat'],['netcat-openbsd'],['netcfg'],['netconsole-tools'],['netcontrol'],['netdate'],['netlabel'],['netpbm'],['network-autoconfig'],['newt'],['nfs-utils'],['nfs4-acl-tools'],['nfsidmap'],['nh2ps'],['nici'],['nici-devel'],['nici64'],['nici64-devel'],['njb-sharp'],['nkf'],['nmap'],['nmh'],['nocpulse-common'],['notification-daemon'],['notify-sharp'],['novell-NLDAPsdk-dyn'],['novell-client'],['novell-client-doc'],['novell-filesystem'],['novell-groupwise-gwclient'],['novell-groupwise-gwclient7'],['novell-ifolder-client-plugins'],['novell-iprint-xclient-sh'],['novell-iprint-xclient-sl'],['novell-ipsec-tools'],['novell-konqueror-plugin'],['novell-ldapext'],['novell-lum'],['novell-messenger-client'],['novell-nautilus-plugin'],['novell-nmasclient'],['novell-nortelplugins'],['novell-novfsd'],['novell-qtgui'],['novell-ui-base'],['novell-xplatlib'],['novell-xplatlib-headers'],['novell-xtier-base'],['novell-xtier-nds4'],['novfs-kmp'],['nspluginwrapper'],['nss-mdns'],['nss-shared-helper'],['nss_ldap'],['ntfs-3g'],['ntfsprogs'],['ntp'],['numactl'],['numlockx'],['nut'],['nvidia-gfx'],['nvidia-gfxG01'],['nvidia-gfxG02'],['nxml-mode'],['obex-data-server'],['obexd'],['obexftp'],['objectweb-anttask'],['obs-common'],['obs-server'],['obs-service-download_files'],['obs-service-format_spec_file'],['obs-service-source_validator'],['obs-signd'],['ocaml'],['ocaml-facile'],['ocfs2'],['ocfs2-tools'],['ocrad'],['ofed'],['oldrhino'],['opal'],['open-fcoe'],['open-iscsi'],['open-ovf'],['openCryptoki'],['openais'],['openbabel'],['opencdk'],['openchange'],['openclipart'],['openct'],['openhpi'],['openhpi-subagent'],['openjade'],['openldap2'],['openldap2-client'],['openmotif'],['openmotif21-libs'],['openmotif22-libs'],['openmpi'],['openobex'],['opensc'],['openscap'],['openslp'],['opensm'],['opensp'],['opensp-doc'],['openssh'],['openssh-askpass-gnome'],['openssl'],['openssl-certs'],['openssl-ibmca'],['openssl-ibmpkcs11'],['openssl_tpm_engine'],['openstack-dashboard'],['openstack-glance'],['openstack-keystone'],['openstack-nova'],['openstack-nova-doc'],['openstack-swift'],['opensuse-manual_en'],['openswan'],['openvas-administrator'],['openvas-client'],['openvas-libraries'],['openvas-manager'],['openvas-scanner'],['openvpn'],['openwsman'],['openwsman-yast'],['opie'],['oprofile'],['opt_gnome-compat'],['oracle-config'],['oracle-instantclient'],['oracle-instantclient11_2'],['oracle-lib-compat'],['oracle-server'],['oracle-update'],['oracleasm'],['orarun'],['orbit'],['orbit2'],['orc'],['orca'],['oro'],['osad'],['osc'],['ovaldi'],['oxygen-icon-theme'],['ozerocdoff'],['pacemaker'],['pacemaker-mgmt'],['pacemaker-pygui'],['package-translations'],['padevchooser'],['pam'],['pam-config'],['pam-modules'],['pam_apparmor'],['pam_csync'],['pam_fp'],['pam_krb5'],['pam_ldap'],['pam_mount'],['pam_p11'],['pam_pkcs11'],['pam_radius'],['pam_smb'],['pam_ssh'],['paman'],['pan'],['pango'],['pangomm'],['papi'],['paprefs'],['parted'],['patch'],['patchutils'],['patterns'],['patterns-ha-geo'],['patterns-hae'],['patterns-ncl'],['patterns-rt'],['patterns-sdk'],['patterns-sled'],['patterns-slepos'],['patterns-sles'],['patterns-sles-for-vmware'],['patterns-sletc'],['patterns-slms'],['patterns-smt'],['patterns-webyast'],['pavucontrol'],['pavumeter'],['pax'],['pbbuttonsd'],['pciutils'],['pciutils-ids'],['pcmciautils'],['pcp'],['pcre'],['pcsc-acr38'],['pcsc-asedriveiiie-serial'],['pcsc-asedriveiiie-usb'],['pcsc-asekey'],['pcsc-ccid'],['pcsc-cyberjack'],['pcsc-eco5000'],['pcsc-gempc'],['pcsc-lite'],['pcsc-reflex60'],['pcsc-towitoko'],['pdb'],['pdfmod'],['pdisk'],['perf'],['perfmon'],['perftest'],['perl'],['perl-Algorithm-Annotate'],['perl-Algorithm-Diff'],['perl-Apache-AuthCookie'],['perl-Apache-AuthNetLDAP'],['perl-Apache-DBI'],['perl-Apache-Filter'],['perl-Apache-Session'],['perl-Apache-SessionX'],['perl-Apache2-AuthCookieDBI'],['perl-App-CLI'],['perl-AppConfig'],['perl-Arch'],['perl-Archive-Zip'],['perl-Array-Compare'],['perl-Authen-PAM'],['perl-Authen-SASL'],['perl-Authen-SASL-Cyrus'],['perl-BIND-Conf_Parser'],['perl-BSD-Resource'],['perl-BSSolv'],['perl-BerkeleyDB'],['perl-Bit-Vector'],['perl-Bootloader'],['perl-CDDB_get'],['perl-CGI-Application'],['perl-CGI-Session'],['perl-Cache-Cache'],['perl-Cairo'],['perl-Carp-Assert'],['perl-Carp-Clan'],['perl-Chart'],['perl-Class-Accessor'],['perl-Class-Autouse'],['perl-Class-Data-Inheritable'],['perl-Class-Date'],['perl-Class-Inspector'],['perl-Class-MethodMaker'],['perl-Class-Multimethods'],['perl-Class-Singleton'],['perl-Class-Spiffy'],['perl-Class-WhiteHole'],['perl-Class-XPath'],['perl-Clone'],['perl-Config-Crontab'],['perl-Config-General'],['perl-Config-IniFiles'],['perl-Convert-ASN1'],['perl-Convert-BER'],['perl-Convert-BinHex'],['perl-Convert-TNEF'],['perl-Convert-UUlib'],['perl-Crypt-Blowfish'],['perl-Crypt-CBC'],['perl-Crypt-DES'],['perl-Crypt-OpenSSL-RSA'],['perl-Crypt-SSLeay'],['perl-Crypt-SmbHash'],['perl-Curses'],['perl-CursesWidgets'],['perl-DBD-CSV'],['perl-DBD-ODBC'],['perl-DBD-Pg'],['perl-DBD-SQLite'],['perl-DBD-XBase'],['perl-DBD-mysql'],['perl-DBI'],['perl-DBIx-Migration-Directories'],['perl-DBIx-Transaction'],['perl-Data-Hierarchy'],['perl-Data-ShowTable'],['perl-Data-UUID'],['perl-Date-Calc'],['perl-Date-Manip'],['perl-DateTime'],['perl-DateTime-Locale'],['perl-DateTime-TimeZone'],['perl-Devel-CoreStack'],['perl-Devel-Symdump'],['perl-Digest-HMAC'],['perl-Digest-MD4'],['perl-Digest-SHA1'],['perl-Encode-HanExtra'],['perl-Encode-JIS2K'],['perl-Error'],['perl-Event'],['perl-Expect'],['perl-ExtUtils-Depends'],['perl-ExtUtils-F77'],['perl-ExtUtils-PkgConfig'],['perl-ExtUtils-XSBuilder'],['perl-File-Basename-Object'],['perl-File-HomeDir'],['perl-File-MMagic'],['perl-File-Tail'],['perl-File-Type'],['perl-File-Which'],['perl-FileHandle-Unget'],['perl-Filesys-Df'],['perl-Filter'],['perl-Finance-Quote'],['perl-Font-AFM'],['perl-Font-FreeType'],['perl-FreezeThaw'],['perl-GD'],['perl-GD-Graph3d'],['perl-GDGraph'],['perl-GDTextUtil'],['perl-Getopt-Mixed'],['perl-Glib'],['perl-Gtk2'],['perl-HTML-Clean'],['perl-HTML-Encoding'],['perl-HTML-FillInForm'],['perl-HTML-Format'],['perl-HTML-Parser'],['perl-HTML-SimpleParse'],['perl-HTML-TableExtract'],['perl-HTML-Tagset'],['perl-HTML-Template'],['perl-HTML-Template-Expr'],['perl-HTML-Template-JIT'],['perl-HTML-Tidy'],['perl-HTML-TokeParser-Simple'],['perl-HTML-Tree'],['perl-HTTP-DAV'],['perl-HTTPS-Daemon'],['perl-IO-Digest'],['perl-IO-Multiplex'],['perl-IO-Pager'],['perl-IO-Socket-INET6'],['perl-IO-Socket-Multicast'],['perl-IO-Socket-SSL'],['perl-IO-String'],['perl-IO-Stty'],['perl-IO-Tty'],['perl-IO-stringy'],['perl-IPC-Run'],['perl-Image-Size'],['perl-Inline'],['perl-Inline-C'],['perl-JSON'],['perl-Linux-Inotify2'],['perl-List-MoreUtils'],['perl-Locale-Maketext-Lexicon'],['perl-Log-Dispatch'],['perl-Log-Log4perl'],['perl-MIME-Lite'],['perl-MIME-Types'],['perl-MIME-tools'],['perl-MLDBM'],['perl-MLDBM-Sync'],['perl-Mail-DKIM'],['perl-Mail-Mbox-MessageParser'],['perl-Mail-Sendmail'],['perl-MailTools'],['perl-Mcrypt'],['perl-Module-Info'],['perl-NOCpulse-Probe'],['perl-Net-DNS'],['perl-Net-Daemon'],['perl-Net-Http-Server'],['perl-Net-IP'],['perl-Net-IPv4Addr'],['perl-Net-Jabber'],['perl-Net-Netmask'],['perl-Net-SNMP'],['perl-Net-SSLeay'],['perl-Net-Server'],['perl-Net-Telnet'],['perl-Net-Whois-RIPE'],['perl-Net-XMPP'],['perl-Net-ext'],['perl-NetAddr-IP'],['perl-NetxAP'],['perl-PDA-Pilot'],['perl-PDF-API2'],['perl-PDL'],['perl-Params-Validate'],['perl-Parse-RecDescent'],['perl-Parse-Yapp'],['perl-Path-Class'],['perl-PerlIO-eol'],['perl-PerlIO-via-dynamic'],['perl-PerlIO-via-symlink'],['perl-PlRPC'],['perl-Pod-Coverage'],['perl-Pod-HtmlPsPdf'],['perl-PostScript-Simple'],['perl-Prima'],['perl-Proc-Fork'],['perl-Quantum-Superpositions'],['perl-RPC-XML'],['perl-RPM2'],['perl-Regexp-Common'],['perl-Regexp-Shellish'],['perl-SGML-Parser-OpenSP'],['perl-SGMLS'],['perl-SOAP-Lite'],['perl-SQL-Statement'],['perl-SVN-Simple'],['perl-Satcon'],['perl-Set-Crontab'],['perl-Set-IntSpan'],['perl-Set-Object'],['perl-Set-Scalar'],['perl-Socket-MsgHdr'],['perl-Socket6'],['perl-Spiffy'],['perl-Sub-Override'],['perl-Sub-Uplevel'],['perl-Symbol-Table'],['perl-Template-Toolkit'],['perl-Term-ReadPassword'],['perl-TermReadKey'],['perl-TermReadLine-Gnu'],['perl-Test-Base'],['perl-Test-Exception'],['perl-Test-Pod'],['perl-Test-Pod-Coverage'],['perl-Test-Warn'],['perl-Text-ASCIITable'],['perl-Text-CSV_XS'],['perl-Text-CharWidth'],['perl-Text-DelimMatch'],['perl-Text-Diff'],['perl-Text-Iconv'],['perl-Text-Kakasi'],['perl-Tie-Cache'],['perl-Tie-IxHash'],['perl-Time-Duration'],['perl-Time-Period'],['perl-Time-modules'],['perl-TimeDate'],['perl-Tk'],['perl-Tree-DAG_Node'],['perl-UNIVERSAL-require'],['perl-URI'],['perl-Unicode-Map8'],['perl-Unicode-String'],['perl-Unix-Syslog'],['perl-WWW-Curl'],['perl-WeakRef'],['perl-X500-DN'],['perl-XML-Bare'],['perl-XML-DOM'],['perl-XML-Dumper'],['perl-XML-LibXML'],['perl-XML-LibXML-Common'],['perl-XML-LibXSLT'],['perl-XML-NamespaceSupport'],['perl-XML-NodeFilter'],['perl-XML-Parser'],['perl-XML-RegExp'],['perl-XML-SAX'],['perl-XML-Simple'],['perl-XML-SimpleObject-LibXML'],['perl-XML-Stream'],['perl-XML-Twig'],['perl-XML-Writer'],['perl-XML-XPath'],['perl-XML-XSLT'],['perl-YAML'],['perl-YAML-Syck'],['perl-auditlog-keeper-client'],['perl-bp'],['perl-gettext'],['perl-ldap'],['perl-libapt-pkg'],['perl-libconfigfile'],['perl-libintl-perl'],['perl-libwww-perl'],['perl-libxml-perl'],['perl-macros'],['perl-parent'],['perl-ptkdb'],['perl-rpmmd'],['perlref'],['permissions'],['pessulus'],['petitboot'],['pfmon'],['phalanx'],['phonon'],['php5'],['php5-pear-auth_sasl'],['php5-pear-date'],['php5-pear-db'],['php5-pear-file'],['php5-pear-log'],['php5-pear-mail'],['php5-pear-mail_mime'],['php53'],['pidentd'],['pidgin'],['pidgin-otr'],['pidgin-sipe'],['pigz'],['pilot-link'],['pin'],['pinentry'],['pixman'],['pkcs11-helper'],['pkg-config'],['planner'],['plasma-addons'],['plasmoid-quickaccess'],['plotutils'],['pm-profiler'],['pm-utils'],['pm-utils-branding-HP-ZIP'],['pmtools'],['podsleuth'],['policycoreutils'],['polkit-default-privs'],['polkit-qt'],['poppler'],['poppler-data'],['portaudio'],['portmap'],['posix_cc'],['post-build-checks'],['postfix'],['postgresql'],['postgresql-init'],['postgresql-jdbc'],['postgresql-libs'],['postgresql-pl'],['postgresql91'],['postgresql91-libs'],['pothana2000'],['powerdevil'],['powerpc-utils'],['powerpc-utils-python'],['powerpc32'],['powertop'],['ppc64-diag'],['ppl'],['ppl-testsuite'],['ppp'],['pptp'],['pptpd'],['prctl'],['preinstallimage-base'],['prelink'],['preload'],['procinfo'],['procmail'],['procps'],['providers'],['ps3-utils'],['psgml'],['psmisc'],['pssh'],['pstoedit'],['psutils'],['ptdownloader'],['pth'],['ptools'],['ptpd'],['pulseaudio'],['puppet'],['pure-ftpd'],['puretls'],['pwdutils'],['pwlib'],['pybliographer'],['pychecker'],['pylint'],['pyrex'],['pysol'],['python'],['python-Jinja2'],['python-MiniMock'],['python-Paste'],['python-PasteDeploy'],['python-PasteScript'],['python-Pygments'],['python-ReportLab'],['python-Routes'],['python-SQLAlchemy'],['python-Sphinx'],['python-Tempita'],['python-WSGIProxy'],['python-WebOb'],['python-WebTest'],['python-amqplib'],['python-anyjson'],['python-ao'],['python-argparse'],['python-augeas'],['python-base'],['python-bibtex'],['python-boto'],['python-cairo'],['python-carrot'],['python-cheetah'],['python-cmdln'],['python-compizconfig'],['python-configobj'],['python-coverage'],['python-crypto'],['python-cssutils'],['python-cups'],['python-curl'],['python-dateutil'],['python-debian'],['python-decorator'],['python-dialog'],['python-distribute'],['python-distutils-extra'],['python-dmidecode'],['python-doc'],['python-docutils'],['python-dtopt'],['python-ethtool'],['python-eventlet'],['python-eyeD3'],['python-fcgi'],['python-flup'],['python-gammu'],['python-gdata'],['python-glanceclient'],['python-gnome'],['python-gnome-extras'],['python-gobject2'],['python-goocanvas'],['python-gpgme'],['python-greenlet'],['python-gstreamer-0_10'],['python-gtk'],['python-gtkglext'],['python-gtksourceview'],['python-gzipstream'],['python-hashlib'],['python-httplib2'],['python-hwdata'],['python-imaging'],['python-iniparse'],['python-ipy'],['python-iso8601'],['python-jabberpy'],['python-kde3'],['python-kde4'],['python-kdebase4'],['python-keyring'],['python-kombu'],['python-ldap'],['python-lockfile'],['python-logilab-astng'],['python-logilab-common'],['python-louis'],['python-lxml'],['python-m2crypto'],['python-magic'],['python-mock'],['python-mox'],['python-mpservlets'],['python-mutagen'],['python-mysql'],['python-netaddr'],['python-netifaces'],['python-nose'],['python-nose-doc'],['python-notify'],['python-novaclient'],['python-numeric'],['python-numpy'],['python-ogg'],['python-opengl'],['python-openssl'],['python-orbit'],['python-pam'],['python-paramiko'],['python-passlib'],['python-pexpect'],['python-ply'],['python-prettytable'],['python-psycopg2'],['python-pyasn1'],['python-pybluez'],['python-pycrypto'],['python-pygame'],['python-pysqlite'],['python-python-daemon'],['python-python-gflags'],['python-python-memcached'],['python-python-openid'],['python-pywbem'],['python-pyx'],['python-qscintilla'],['python-qt'],['python-qt4'],['python-repoze.lru'],['python-scgi'],['python-serial'],['python-setuptools'],['python-simplejson'],['python-sip'],['python-sqlalchemy-migrate'],['python-suds'],['python-twisted'],['python-twisted-conch'],['python-twisted-lore'],['python-twisted-mail'],['python-twisted-names'],['python-twisted-news'],['python-twisted-runner'],['python-twisted-web'],['python-twisted-words'],['python-unittest2'],['python-urlgrabber'],['python-virtinst'],['python-vorbis'],['python-wsgiref'],['python-xattr'],['python-xdg'],['python-xlib'],['python-xmldiff'],['python-yaml'],['python-zopeinterface'],['pythoncad'],['pyxfce'],['pyxml'],['qa_dummy'],['qca'],['qemu'],['qlogic-firmware'],['qlvnictools'],['qperf'],['qpopper'],['qscintilla'],['qslert'],['qt-creator'],['qt3'],['qt3-devel-doc'],['qt3-extensions'],['qt4-qtscript'],['qtc'],['qtcurve-gtk2'],['qtcurve-kde'],['qtcurve-kde4'],['qtsharp'],['quagga'],['quilt'],['quota'],['r8169-kmp'],['rabbitmq-server'],['radvd'],['ralink-firmware'],['raptor'],['rarian'],['rarpd'],['rasqal'],['raw-thumbnailer'],['razor-agents'],['rcs'],['rdesktop'],['rdiff-backup'],['rdist'],['rds-tools'],['re2c'],['realtek-firmware'],['realtek-r8192ce_pci'],['realtek-r8192se_pci'],['rear'],['rear-SUSE'],['recode'],['redbook'],['redland'],['redstone-xmlrpc'],['regexp'],['regina'],['reiserfs'],['relaxngDatatype'],['release-notes-SLES-for-VMware'],['release-notes-ha-geo'],['release-notes-hae'],['release-notes-hasi'],['release-notes-rt'],['release-notes-rte'],['release-notes-sdk'],['release-notes-sled'],['release-notes-slepos'],['release-notes-sles'],['release-notes-slms'],['release-notes-smt'],['release-notes-studioonsite'],['release-notes-suse-cloud'],['release-notes-susemanager'],['release-notes-webyast'],['resource-agents'],['rhino'],['rhn-custom-info'],['rhn-kickstart'],['rhn-virtualization'],['rhncfg'],['rhnlib'],['rhnmd'],['rhnpush'],['rng-tools'],['rpcbind'],['rpm'],['rpm-python'],['rpmlint'],['rpmlint-Factory'],['rpmlint-mini'],['rrdtool'],['rsh'],['rsync'],['rsyslog'],['rt-tests'],['rt3090'],['rt3090-config'],['rt3592'],['rt5390'],['rtasdispd'],['rts5229'],['rts_pstor'],['ruby'],['ruby-dbus'],['ruby-fcgi'],['ruby-ffi'],['ruby-kde4'],['ruby-mysql'],['ruby-polkit'],['ruby-racc'],['ruby-rb-inotify'],['ruby-rpam'],['ruby-rpm'],['ruby-xml-smart'],['ruby-xmlparser'],['rubygem-abstract'],['rubygem-actionmailer-2_1'],['rubygem-actionmailer-2_3'],['rubygem-actionmailer-3_1'],['rubygem-actionpack-2_1'],['rubygem-actionpack-2_3'],['rubygem-actionpack-3_1'],['rubygem-activemodel-3_1'],['rubygem-activerecord-2_1'],['rubygem-activerecord-2_3'],['rubygem-activerecord-3_1'],['rubygem-activeresource-2_1'],['rubygem-activeresource-2_3'],['rubygem-activeresource-3_1'],['rubygem-activesupport-2_1'],['rubygem-activesupport-2_3'],['rubygem-activesupport-3_1'],['rubygem-addressable'],['rubygem-amazon-ec2'],['rubygem-amqp'],['rubygem-arel-2_2'],['rubygem-bcrypt-ruby'],['rubygem-builder'],['rubygem-builder-3_0'],['rubygem-bundler'],['rubygem-bunny'],['rubygem-chef'],['rubygem-chef-expander'],['rubygem-chef-server'],['rubygem-chef-server-api'],['rubygem-chef-server-webui'],['rubygem-chef-solr'],['rubygem-coderay'],['rubygem-cstruct'],['rubygem-daemons'],['rubygem-declarative_authorization'],['rubygem-delayed_job'],['rubygem-dep_selector'],['rubygem-em-http-request'],['rubygem-erubis'],['rubygem-erubis-2_7'],['rubygem-eventmachine'],['rubygem-exception_notification'],['rubygem-extlib'],['rubygem-fast_xs'],['rubygem-fastercsv'],['rubygem-friendly_id'],['rubygem-gemcutter'],['rubygem-gettext'],['rubygem-gettext_activerecord'],['rubygem-gettext_rails'],['rubygem-gruff'],['rubygem-haml'],['rubygem-highline'],['rubygem-hike'],['rubygem-hoe'],['rubygem-http_accept_language'],['rubygem-i18n'],['rubygem-i18n-0_6'],['rubygem-inifile'],['rubygem-json'],['rubygem-json_pure'],['rubygem-kgio'],['rubygem-kiwi2puppet'],['rubygem-kwalify'],['rubygem-libxml-ruby'],['rubygem-locale'],['rubygem-locale_rails'],['rubygem-mail-2_3'],['rubygem-maruku'],['rubygem-merb-assets'],['rubygem-merb-core'],['rubygem-merb-haml'],['rubygem-merb-helpers'],['rubygem-merb-param-protection'],['rubygem-mime-types'],['rubygem-mislav-will_paginate'],['rubygem-mixlib-authentication'],['rubygem-mixlib-cli'],['rubygem-mixlib-config'],['rubygem-mixlib-log'],['rubygem-mocha'],['rubygem-moneta'],['rubygem-multi_json'],['rubygem-net-http-digest_auth'],['rubygem-net-ssh'],['rubygem-net-ssh-gateway'],['rubygem-net-ssh-multi'],['rubygem-net_observer'],['rubygem-nokogiri'],['rubygem-oauth'],['rubygem-ohai'],['rubygem-open4'],['rubygem-paperclip'],['rubygem-pg'],['rubygem-polkit'],['rubygem-polyglot'],['rubygem-postgres'],['rubygem-rack'],['rubygem-rack-1_3'],['rubygem-rack-cache-1_1'],['rubygem-rack-mount-0_8'],['rubygem-rack-ssl'],['rubygem-rack-test-0_6'],['rubygem-rails'],['rubygem-rails-2_1'],['rubygem-rails-2_3'],['rubygem-rails-3_1'],['rubygem-railties-3_1'],['rubygem-rainbows'],['rubygem-raindrops'],['rubygem-rake'],['rubygem-rake-compiler'],['rubygem-rcov'],['rubygem-rdoc'],['rubygem-rest-client'],['rubygem-restful-authentication'],['rubygem-restful_authentication'],['rubygem-restility'],['rubygem-rmagick'],['rubygem-rpam'],['rubygem-ruby-hmac'],['rubygem-ruby-openid'],['rubygem-ruby-shadow'],['rubygem-rubyforge'],['rubygem-rubyist-aasm'],['rubygem-sass'],['rubygem-selenium-client'],['rubygem-simple-navigation'],['rubygem-sprockets'],['rubygem-sqlite3'],['rubygem-syntax'],['rubygem-syslogger'],['rubygem-systemu'],['rubygem-test-unit'],['rubygem-thin'],['rubygem-thor'],['rubygem-tilt'],['rubygem-treetop'],['rubygem-tzinfo'],['rubygem-unicorn'],['rubygem-uuidtools'],['rubygem-validates_timeliness'],['rubygem-webyast-rake-tasks'],['rubygem-will_paginate'],['rubygem-wsman'],['rubygem-xml-simple'],['rubygem-yajl-ruby'],['rubygem-yard'],['rubygem-yast2-webservice-tasks'],['rubygems'],['rxvt-unicode'],['rzsz'],['s390-32'],['s390-tools'],['sabayon'],['sablot'],['salinfo'],['samba'],['samba-doc'],['samba4'],['samba4-libs'],['samplekmp-source'],['sane-backends'],['sane-frontends'],['sap-es-tools'],['sap-installation-wizard'],['sap-locale'],['sap-media-changer'],['sap_suse_cluster_connector'],['sapconf'],['sash'],['satsolver-bindings'],['sax2'],['saxon'],['saxon8'],['sazanami-fonts'],['sbd'],['sbl'],['sblim-cim-client2'],['sblim-cmpi-base'],['sblim-cmpi-devel'],['sblim-cmpi-dhcp'],['sblim-cmpi-dns'],['sblim-cmpi-ethport_profile'],['sblim-cmpi-fsvol'],['sblim-cmpi-network'],['sblim-cmpi-nfsv3'],['sblim-cmpi-nfsv4'],['sblim-cmpi-params'],['sblim-cmpi-samba'],['sblim-cmpi-smbios'],['sblim-cmpi-sysfs'],['sblim-cmpi-syslog'],['sblim-cmpiutil'],['sblim-gather'],['sblim-gather-novirt'],['sblim-indication_helper'],['sblim-sfcb'],['sblim-sfcc'],['sblim-smis-hba'],['sblim-testsuite'],['sblim-tools-libra'],['sblim-wbemcli'],['scdb'],['sces-client'],['schroedinger'],['scim'],['scim-anthy'],['scim-bridge'],['scim-canna'],['scim-chewing'],['scim-hangul'],['scim-input-pad'],['scim-m17n'],['scim-pinyin'],['scim-qtimm'],['scim-skk'],['scim-tables'],['scim-tomoe'],['scim-uim'],['scons'],['scout'],['scpm'],['screen'],['scrollkeeper'],['scsi-eventd'],['scsirastools'],['scsires'],['sdparm'],['sdpnetstat'],['seahorse'],['seahorse-plugins'],['seccheck'],['sed'],['seed'],['selfhtml'],['selfphp'],['selinux-doc'],['semi-xemacs'],['sendmail'],['sendxmpp'],['sensors'],['servicelog'],['servletapi4'],['servletapi5'],['setools'],['setserial'],['sg3_utils'],['sgi-fonts'],['sgml-skel'],['sgmltool'],['sgpio'],['sgrep'],['shared-mime-info'],['sharutils'],['sil-charis'],['sil-doulos'],['silc-toolkit'],['simias'],['simple-ccsm'],['simple-ccsm-kde'],['simple-xml'],['sisctrl'],['skanlite'],['skelcd'],['skelcd-SLES-for-VMware'],['skelcd-control-SLED'],['skelcd-control-SLES'],['skelcd-control-SLES-for-VMware'],['skelcd-driverupdate'],['skelcd-ha-geo'],['skelcd-hae'],['skelcd-hasi'],['skelcd-rt'],['skelcd-sap-aio'],['skelcd-sdk'],['skelcd-sled'],['skelcd-slepos'],['skelcd-sles'],['skelcd-smt'],['skelcd-studioonsite'],['skim'],['skim-scim-anthy'],['skim-scim-canna'],['skim-scim-skk'],['slang'],['sle-11-SP2-WebYaST-release'],['sle-ha-manuals_en'],['sle-hae-SP1-migration'],['sle-hae-SP2-migration'],['sle-hae-release'],['sle-rt-qs_en'],['sle-sdk-SP1-migration'],['sle-sdk-SP2-migration'],['sle-sdk-release'],['sle-slms-1_2-migration'],['sle-slms-manual_en'],['sle-slms-release'],['sle-smt-SP2-migration'],['sle-smt-release'],['sle-smt_en'],['sled-admin_de'],['sled-admin_ja'],['sled-admin_pt_BR'],['sled-admin_zh_CN'],['sled-admin_zh_TW'],['sled-apps_de'],['sled-apps_ja'],['sled-apps_pt_BR'],['sled-apps_zh_CN'],['sled-apps_zh_TW'],['sled-deployment_de'],['sled-desktop-qs_de'],['sled-desktop-qs_es'],['sled-desktop-qs_fr'],['sled-desktop-qs_it'],['sled-desktop-qs_ja'],['sled-desktop-qs_pt_BR'],['sled-desktop-qs_zh_CN'],['sled-desktop-qs_zh_TW'],['sled-gnome-cbt_en'],['sled-gnomeuser_de'],['sled-gnomeuser_ja'],['sled-gnomeuser_pt_BR'],['sled-gnomeuser_zh_CN'],['sled-gnomeuser_zh_TW'],['sled-installquick_ar'],['sled-installquick_cs'],['sled-installquick_de'],['sled-installquick_es'],['sled-installquick_fr'],['sled-installquick_hu'],['sled-installquick_it'],['sled-installquick_ja'],['sled-installquick_ko'],['sled-installquick_pl'],['sled-installquick_pt_BR'],['sled-installquick_ru'],['sled-installquick_zh_CN'],['sled-installquick_zh_TW'],['sled-kde-user_de'],['sled-kde-user_es'],['sled-kde-user_fr'],['sled-kde-user_it'],['sled-kde-user_ja'],['sled-kde-user_pt_BR'],['sled-kde-user_zh_CN'],['sled-kde-user_zh_TW'],['sled-manuals_en'],['sled-network-user_de'],['sled-network-user_en'],['sled-network-user_es'],['sled-network-user_fr'],['sled-network-user_it'],['sled-network-user_ja'],['sled-network-user_pt_BR'],['sled-network-user_zh_CN'],['sled-network-user_zh_TW'],['sled-release'],['sled11-branding-acer-BAP50CP'],['sled11-branding-hp-bnb'],['sled11-branding-hp-cnb-SBSO'],['sleha-bootstrap'],['sleha-guide_en'],['sleha-guide_ja'],['sleha-guide_zh_CN'],['sleha-guide_zh_TW'],['slepos-guide_en'],['slert'],['slert-release'],['sles-admin_de'],['sles-admin_en'],['sles-admin_ja'],['sles-admin_zh_CN'],['sles-admin_zh_TW'],['sles-deployment_de'],['sles-deployment_es'],['sles-deployment_fr'],['sles-deployment_it'],['sles-deployment_ja'],['sles-deployment_ko'],['sles-deployment_pt_BR'],['sles-deployment_zh_CN'],['sles-deployment_zh_TW'],['sles-installquick_ar'],['sles-installquick_cs'],['sles-installquick_de'],['sles-installquick_es'],['sles-installquick_fr'],['sles-installquick_hu'],['sles-installquick_it'],['sles-installquick_ja'],['sles-installquick_ko'],['sles-installquick_pl'],['sles-installquick_pt_BR'],['sles-installquick_ru'],['sles-installquick_zh_CN'],['sles-installquick_zh_TW'],['sles-manuals_en'],['sles-release'],['sles-release-EC2'],['sles-storage_ja'],['sles-storage_zh_CN'],['sles-storage_zh_TW'],['sles4sap-guide_en'],['sleshammer'],['slib'],['slms'],['slms-templates'],['slms-update-kit'],['sm-ncc-sync-data'],['smartmontools'],['smdba'],['smis-providers'],['smp_utils'],['smpppd'],['smt'],['smt-client'],['smt-client-metapackage'],['smt-release'],['snakeyaml'],['snapper'],['snipl'],['socat'],['soprano'],['soprano-backend-sesame'],['sound-juicer'],['sound-theme-freedesktop'],['soundtouch'],['sox'],['spacecmd'],['spacewalk-admin'],['spacewalk-backend'],['spacewalk-branding'],['spacewalk-certs-tools'],['spacewalk-client-repository'],['spacewalk-client-repository-arch'],['spacewalk-client-repository-sle-10-4'],['spacewalk-client-tools'],['spacewalk-config'],['spacewalk-doc-indexes'],['spacewalk-java'],['spacewalk-koan'],['spacewalk-monitoring'],['spacewalk-oscap'],['spacewalk-proxy'],['spacewalk-proxy-docs'],['spacewalk-proxy-installer'],['spacewalk-pylint'],['spacewalk-remote-utils'],['spacewalk-reports'],['spacewalk-search'],['spacewalk-setup'],['spacewalk-setup-jabberd'],['spacewalk-ssl-cert-check'],['spacewalk-utils'],['spacewalk-web'],['spacewalksd'],['spamassassin'],['spandsp'],['sparse'],['speechd'],['speex'],['splashy'],['spu-tools'],['sqlite2'],['sqlite3'],['squashfs'],['squid'],['squid3'],['squidGuard'],['src_vipa'],['sreadahead'],['srptools'],['sssd'],['star'],['startup-notification'],['statserial'],['strace'],['strigi'],['strongswan'],['struts'],['stunnel'],['subscription-tools'],['subversion'],['subversion-doc'],['suck'],['sudo'],['sumf'],['supportutils'],['supportutils-plugin-susecloud'],['suse-ami-tools'],['suse-build-key'],['suse-sam'],['suse-sam-data'],['suseRegister'],['suseRegisterInfo'],['suseRegisterRES'],['susedoc'],['susehelp'],['susemanager'],['susemanager-jsp_en'],['susemanager-manuals_en'],['susemanager-schema'],['susestudio'],['susestudio-admin_en'],['susestudio-image-helpers'],['susestudio-java-client'],['susestudio-onsite-docs_en'],['susestudio-quick_en'],['susestudio-user_en'],['susevbox'],['suspend'],['svg-schema'],['swig'],['sysconfig'],['sysfsutils'],['syslinux'],['syslog-ng'],['syslogd'],['sysstat'],['system-config-printer'],['systemtap'],['systemtap-docs'],['sysvinit'],['t1lib'],['t1utils'],['taglib'],['taglib-extras'],['taglib-sharp'],['talk'],['tamil-gtk2im'],['tango-icon-theme'],['tar'],['tboot'],['tcl'],['tclx'],['tcpd'],['tcpdump'],['tcsh'],['tei-roma'],['tei-xsl-stylesheets'],['telepathy-farsight'],['telepathy-gabble'],['telepathy-glib'],['telepathy-haze'],['telepathy-idle'],['telepathy-mission-control'],['telepathy-salut'],['telepathy-stream-engine'],['telnet'],['termcap'],['terminus-font'],['testgart'],['texinfo'],['texlive'],['texlive-bin'],['texlive-cjk-latex-extras'],['tftp'],['tgt'],['thinkeramik'],['tidy'],['tiff'],['tightvnc'],['timezone'],['timezone-java'],['tiny-sqlmap'],['tix'],['tk'],['tla'],['tn5250'],['tomboy'],['tomcat6'],['tomcat_apparmor'],['tomoe'],['tomoe-gtk'],['totem'],['totem-pl-parser'],['touchcal'],['tpm-tools'],['traffic-vis'],['trang'],['transfig'],['translation-update'],['translation-update-upstream'],['tree'],['treeline'],['trousers'],['trustedgrub'],['tsclient'],['tsdb'],['tse3'],['ttf-alee'],['ttf-arphic'],['ttf-arphic-ukai'],['ttf-arphic-uming'],['ttf-cmex'],['ttf-founder'],['tunables'],['tunctl'],['turnpike'],['tvflash'],['udev'],['udev-mm'],['udhcp'],['uim'],['ulimit'],['unarj'],['unattended_upgrade_dud'],['unclutter'],['unfonts'],['units'],['unixODBC'],['unixODBC-gui-qt'],['unrar'],['unsermake'],['unzip'],['update-alternatives'],['update-desktop-files'],['update-test-trival'],['urfkill'],['usb_modeswitch'],['usbip'],['usbmuxd'],['usbutils'],['utempter'],['util-linux'],['uucp'],['uuid'],['vacation'],['vala'],['valgrind'],['vcdimager'],['vhostmd'],['vim'],['vinagre'],['vino'],['virt-manager'],['virt-utils'],['virt-viewer'],['virtualbox-ose'],['vlan'],['vlna'],['vlock'],['vm-install'],['vmx-manager'],['vobject'],['vorbis-tools'],['vpnc'],['vsftpd'],['vte'],['w3m'],['wacom'],['wavpack'],['wbxml2'],['wdiff'],['webalizer'],['webkit-sharp'],['websphere-as_ce'],['webyast-activedirectory-ui'],['webyast-activedirectory-ws'],['webyast-base-ui'],['webyast-base-ws'],['webyast-firewall-ui'],['webyast-firewall-ws'],['webyast-firstboot-ws'],['webyast-kerberos-ui'],['webyast-kerberos-ws'],['webyast-language-ui'],['webyast-language-ws'],['webyast-ldap-ui'],['webyast-ldap-ws'],['webyast-licenses-ui'],['webyast-licenses-ws'],['webyast-mail-ui'],['webyast-mail-ws'],['webyast-network-ui'],['webyast-network-ws'],['webyast-ntp-ws'],['webyast-permissions-ui'],['webyast-reboot-ui'],['webyast-reboot-ws'],['webyast-registration-ui'],['webyast-registration-ws'],['webyast-roles-ui'],['webyast-roles-ws'],['webyast-root-user-ui'],['webyast-root-user-ws'],['webyast-selenium'],['webyast-services-ui'],['webyast-services-ws'],['webyast-slms-ui'],['webyast-slms-ws'],['webyast-software-ui'],['webyast-software-ws'],['webyast-status-ui'],['webyast-status-ws'],['webyast-time-ui'],['webyast-time-ws'],['webyast-users-ui'],['webyast-users-ws'],['wget'],['whois'],['wiggle'],['wireless-regdb'],['wireless-tools'],['wireshark'],['wm-icons'],['wodim'],['wol'],['wondershaper'],['wordcut'],['words'],['wpa_supplicant'],['ws-commons-util'],['ws-jaxme'],['wsdl4j'],['wsmancli'],['wv'],['wv2'],['wvdial'],['wvstreams'],['wwwoffle'],['wxGTK'],['wxGTK-doc'],['x11-input-evtouch'],['x11-input-fujitsu'],['x11-input-synaptics'],['x11-input-wacom'],['x11-tools'],['x11-video-fglrxG01'],['x11-video-fglrxG02'],['x11-video-nvidia'],['x11-video-nvidiaG01'],['x11-video-nvidiaG02'],['x3270'],['x86info'],['xalan-j2'],['xano-mincho'],['xaw3d'],['xawtv'],['xbase'],['xbsql'],['xchat'],['xdelta'],['xdg-menu'],['xdg-user-dirs'],['xdg-user-dirs-gtk'],['xdg-utils'],['xdmbgrd'],['xemacs'],['xemacs-packages'],['xen'],['xerces-j2'],['xerces-j2-bootstrap'],['xfce-mcs-manager'],['xfce4-panel'],['xfig'],['xfntjp'],['xfntkr'],['xfsdump'],['xfsprogs'],['xhtml-dtd'],['xine-lib'],['xinetd'],['xiterm'],['xkeyboard-config'],['xli'],['xlockmore'],['xmanja'],['xml-commons'],['xml-commons-apis-bootstrap'],['xml-commons-resolver'],['xml-commons-resolver-bootstrap'],['xmlbeans'],['xmlbeans-mini'],['xmlcharent'],['xmldb-api'],['xmlformat'],['xmlrpc-c'],['xmlstarlet'],['xmlto'],['xmset'],['xorg-x11'],['xorg-x11-doc'],['xorg-x11-driver-input'],['xorg-x11-driver-video'],['xorg-x11-driver-video-chrome9'],['xorg-x11-driver-video-radeonhd'],['xorg-x11-driver-video-unichrome'],['xorg-x11-fonts'],['xorg-x11-fonts-devel'],['xorg-x11-libICE'],['xorg-x11-libSM'],['xorg-x11-libX11'],['xorg-x11-libX11-ccache'],['xorg-x11-libX11-unstable-devel'],['xorg-x11-libXau'],['xorg-x11-libXdmcp'],['xorg-x11-libXext'],['xorg-x11-libXext-unstable-devel'],['xorg-x11-libXfixes'],['xorg-x11-libXmu'],['xorg-x11-libXp'],['xorg-x11-libXpm'],['xorg-x11-libXprintUtil'],['xorg-x11-libXrender'],['xorg-x11-libXt'],['xorg-x11-libXv'],['xorg-x11-libfontenc'],['xorg-x11-libs'],['xorg-x11-libxcb'],['xorg-x11-libxcb-unstable-devel'],['xorg-x11-libxkbfile'],['xorg-x11-proto-devel'],['xorg-x11-proto-unstable-devel'],['xorg-x11-server'],['xorg-x11-server-dmx'],['xorg-x11-server-rdp'],['xorg-x11-util-devel'],['xorg-x11-xtrans-devel'],['xosd'],['xosview'],['xournal'],['xpdf'],['xpp'],['xpp2'],['xpp3'],['xrdp'],['xsane'],['xscreensaver'],['xslide'],['xsp'],['xstroke'],['xsupplicant'],['xterm'],['xtermset'],['xvkbd'],['xz'],['yasm'],['yast2'],['yast2-CASA'],['yast2-add-on'],['yast2-add-on-creator'],['yast2-all-packages'],['yast2-apparmor'],['yast2-audit-laf'],['yast2-autofs'],['yast2-backup'],['yast2-boot-server'],['yast2-bootloader'],['yast2-branding-SLED'],['yast2-branding-SLES'],['yast2-branding-SLES-for-VMware'],['yast2-branding-openSUSE'],['yast2-ca-management'],['yast2-casa-ats'],['yast2-cluster'],['yast2-control-center'],['yast2-control-center-gnome'],['yast2-core'],['yast2-country'],['yast2-crowbar'],['yast2-dbus-client'],['yast2-dbus-server'],['yast2-devtools'],['yast2-dhcp-server'],['yast2-dirinstall'],['yast2-dns-server'],['yast2-drbd'],['yast2-fcoe-client'],['yast2-fingerprint-reader'],['yast2-firewall'],['yast2-firstboot'],['yast2-ftp-server'],['yast2-gtk'],['yast2-hardware-detection'],['yast2-heartbeat'],['yast2-http-server'],['yast2-inetd'],['yast2-installation'],['yast2-instserver'],['yast2-iplb'],['yast2-irda'],['yast2-iscsi-client'],['yast2-iscsi-lio-server'],['yast2-iscsi-server'],['yast2-isns'],['yast2-issleconfig'],['yast2-kdump'],['yast2-kerberos-client'],['yast2-kerberos-server'],['yast2-ldap'],['yast2-ldap-client'],['yast2-ldap-server'],['yast2-libyui'],['yast2-linux-user-mgmt'],['yast2-live-installer'],['yast2-lxc'],['yast2-mail'],['yast2-mcs-plugin'],['yast2-metapackage-handler'],['yast2-mouse'],['yast2-multipath'],['yast2-ncurses'],['yast2-ncurses-pkg'],['yast2-network'],['yast2-nfs-client'],['yast2-nfs-server'],['yast2-nis-client'],['yast2-nis-server'],['yast2-novell-client'],['yast2-ntp-client'],['yast2-online-update'],['yast2-openvas-security-scanner'],['yast2-packager'],['yast2-pam'],['yast2-perl-bindings'],['yast2-phone-services'],['yast2-pkg-bindings'],['yast2-pkg-bindings-devel-doc'],['yast2-pos-installation'],['yast2-power-management'],['yast2-printer'],['yast2-product-creator'],['yast2-profile-manager'],['yast2-python-bindings'],['yast2-qt'],['yast2-qt-pkg'],['yast2-rdp'],['yast2-registration'],['yast2-reipl'],['yast2-repair'],['yast2-restore'],['yast2-ruby-bindings'],['yast2-runlevel'],['yast2-s390'],['yast2-samba-client'],['yast2-samba-server'],['yast2-scanner'],['yast2-schema'],['yast2-security'],['yast2-slide-show'],['yast2-slms-server'],['yast2-slp'],['yast2-slp-server'],['yast2-smt'],['yast2-snapper'],['yast2-sound'],['yast2-squid'],['yast2-sshd'],['yast2-storage'],['yast2-sudo'],['yast2-support'],['yast2-sysconfig'],['yast2-system-profile'],['yast2-testsuite'],['yast2-tftp-server'],['yast2-theme'],['yast2-trans-af'],['yast2-trans-allpacks'],['yast2-trans-am'],['yast2-trans-ar'],['yast2-trans-be'],['yast2-trans-bg'],['yast2-trans-bn'],['yast2-trans-bs'],['yast2-trans-ca'],['yast2-trans-cs'],['yast2-trans-cy'],['yast2-trans-da'],['yast2-trans-de'],['yast2-trans-el'],['yast2-trans-en_GB'],['yast2-trans-en_US'],['yast2-trans-es'],['yast2-trans-et'],['yast2-trans-fa'],['yast2-trans-fi'],['yast2-trans-fr'],['yast2-trans-gl'],['yast2-trans-gu'],['yast2-trans-he'],['yast2-trans-hi'],['yast2-trans-hr'],['yast2-trans-hu'],['yast2-trans-id'],['yast2-trans-it'],['yast2-trans-ja'],['yast2-trans-jv'],['yast2-trans-ka'],['yast2-trans-km'],['yast2-trans-ko'],['yast2-trans-lo'],['yast2-trans-lt'],['yast2-trans-mk'],['yast2-trans-mr'],['yast2-trans-ms'],['yast2-trans-my'],['yast2-trans-nb'],['yast2-trans-nl'],['yast2-trans-pa'],['yast2-trans-pl'],['yast2-trans-pot'],['yast2-trans-pt'],['yast2-trans-pt_BR'],['yast2-trans-ro'],['yast2-trans-ru'],['yast2-trans-si'],['yast2-trans-sk'],['yast2-trans-sl'],['yast2-trans-sr'],['yast2-trans-stats'],['yast2-trans-sv'],['yast2-trans-ta'],['yast2-trans-th'],['yast2-trans-tk'],['yast2-trans-tr'],['yast2-trans-uk'],['yast2-trans-vi'],['yast2-trans-vmware-install'],['yast2-trans-wa'],['yast2-trans-xh'],['yast2-trans-zh_CN'],['yast2-trans-zh_TW'],['yast2-trans-zu'],['yast2-transfer'],['yast2-tune'],['yast2-tv'],['yast2-update'],['yast2-users'],['yast2-vm'],['yast2-vmware-warning'],['yast2-wagon'],['yast2-webclient'],['yast2-webclient-patch_updates'],['yast2-webclient-registration'],['yast2-webclient-systemtime'],['yast2-webservice'],['yast2-webservice-ntp'],['yast2-webservice-patches'],['yast2-webservice-registration'],['yast2-x11'],['yast2-xml'],['yast2-ycp-ui-bindings'],['yauap'],['yelp'],['yodl'],['yp-tools'],['ypbind'],['ypserv'],['yudit'],['yum'],['yum-metadata-parser'],['yum-rhn-plugin'],['yum-utils'],['zenity'],['zip'],['ziptool'],['zisofs-tools'],['zlib'],['zoo'],['zsh'],['zvbi'],['zypp-plugin'],['zypp-plugin-spacewalk'],['zypper'] ];
renderPackagesTable(packages);
setup_favorites();
});
//]]>
</script> <meta content="authenticity_token" name="csrf-param" />
<meta content="K5O0UJeG4f6MuhJjNefxDqFkccihP5R/Oh2y9BAmsp0=" name="csrf-token" />
</head>
<body>
<!-- Start: Header -->
<div id="header">
<div id="header-content" class="container_12">
<a href="/" id="header-logo"><img alt="N-obs-logo_small" height="26" src="/assets/n-obs-logo_small-a9f5fc7a8fee8a0ff59c8ad50410e2b1.png" /></a>
<form accept-charset="UTF-8" action="/search/search" class="label-overlay" id="global-search-form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="K5O0UJeG4f6MuhJjNefxDqFkccihP5R/Oh2y9BAmsp0=" /></div> <div style="display: inline">
<label for="search" class="hidden">Search</label>
<input id="search" name="search_text" type="text" value="" /> <input type="submit" value="Search" class="hidden" />
</div>
</form>
</div>
</div>
<!-- End: Header -->
<div id="subheader" class="container_16">
<div id="breadcrump" class="grid_10 alpha">
<span class="icons-home_grey inlineblock"></span><a href="/">SUSE Internal OBS Instance</a>
>
<a href="/project/list_public">Projects</a>
>
<!-- multiple items in crump list but they belong together as sub group, eg sub projects -->
<a href="/project/show?project=SUSE">SUSE</a>:<a href="/project/show?project=SUSE%3ASLE-11-SP2%3AUpdate">SLE-11-SP2:Update</a>:<a href="/project/show?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Test</a>
>
Overview
</div>
<div class="grid_6 omega" style="text-align: right;">
<a href="https://secure-www.novell.com/selfreg/jsp/createOpenSuseAccount.jsp?%22https://build.suse.de/project/show?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest%22">Register</a> |
<a href="/user/login" id="login-trigger">Login</a>
<div id="login-form">
<form accept-charset="UTF-8" action="https://build.suse.de/ICSLogin/auth-up" enctype="application/x-www-form-urlencoded" id="login_form" method="post"><div style="margin:0;padding:0;display:inline"><input name="utf8" type="hidden" value="✓" /><input name="authenticity_token" type="hidden" value="K5O0UJeG4f6MuhJjNefxDqFkccihP5R/Oh2y9BAmsp0=" /></div>
<p>
<input id="url" name="url" type="hidden" value="https://build.suse.de/project/show?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest" />
<input id="context" name="context" type="hidden" value="default" />
<input id="proxypath" name="proxypath" type="hidden" value="reserve" />
<input id="message" name="message" type="hidden" value="Please log in" />
<input id="return_to_path" name="return_to_path" type="hidden" value="/project/show?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest" />
<label for="username">Username</label>
<input id="username" name="username" type="text" value="" />
</p>
<p>
<label for="password">Password</label>
<input id="password" name="password" type="password" value="" />
</p>
<p><input name="commit" onclick="fillEmptyFields();" type="submit" value="Login" /></p>
<p class="slim-footer"><a href="#" id="close-login">Cancel</a></p>
</form> </div>
</div>
</div>
<!-- this is needed for the delete confirm dialogues -->
<div id="dialog_wrapper" style="display: none"></div>
<!-- Start: Main Content Area -->
<div id="content" class="container_16 content-wrapper">
<div class="grid_16 alpha omega box box-shadow">
<div class="box-header header-tabs" id="project_tabs">
<ul>
<li class="selected" id="tab-overview"><a href="/project/show?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Overview</a></li>
<!-- also for incident project -->
<li id="tab-repositories"><a href="/project/repositories?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Repositories</a></li>
<li id="tab-monitor"><a href="/project/monitor?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Monitor</a></li>
<li id="tab-requests"><a href="/project/requests?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Requests</a></li>
<li id="tab-users"><a href="/project/users?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Users</a></li>
<li id="tab-subprojects"><a href="/project/subprojects?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Subprojects</a></li>
<li id="advanced_list_item"><a href="#" id="advanced_tabs_trigger">Advanced</a></li>
</ul>
<div id="advanced_tabs" class="hidden">
<ul>
<li id="tab-projectconfig"><a href="/project/prjconf?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Project Config</a></li>
<li id="tab-attributes"><a href="/project/attributes?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Attributes</a></li>
<li id="tab-meta"><a href="/project/meta?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Meta</a></li>
<li id="tab-status"><a href="/project/status?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">Status</a></li>
</ul>
</div>
</div>
<div class="grid_10 alpha">
<h3 id="project_title">Code 11 SP2 Test Updates Preparation</h3>
<pre class="plain" id="description">
This repository is used for building the Code 11 SP2 official Maintenance Updates
</pre>
</div>
<div class="grid_6 omega">
<ul class="clean_list">
<!-- also for incident project -->
<li>
<span class="icons-exclamation inlineblock"></span>
192
<a href="/project/monitor?blocked=0&building=0&dispatching=0&finished=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&scheduled=0&signing=0&succeeded=0">build errors</a>
</li>
<li>
<span class="icons-information inlineblock"></span>
4
<a href="/project/requests?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">open requests</a>
</li>
<li>
<span class="icons-information inlineblock"></span>
1 <a href="/project/linking_projects?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest" data-remote="true">linking project</a>
</li>
</ul>
</div>
</div>
<div class="grid_10 alpha box box-shadow">
<h2 class="box-header">Packages (3804)</h2>
<div id="packages_table_wrapper" data-url="/package/show?package=REPLACEIT&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest">
</div>
</div>
<div class="grid_6 omega box box-shadow">
<div class="box-header header-tabs">
<ul id="result_select_">
<li class="selected">
<a class="result_select_link_" id="result_select_link__0" href="#">Build Results</a>
<span class="result_reload_ icons-reload inlineblock" id="result_reload__0" onclick="update_build_result()" title="Reload"></span>
<img alt="Ajax-loader" id="result_spinner__0" src="/assets/ajax-loader-439a76dd6a2495d3ff4d56f8c64bbd86.gif" />
</li>
</ul>
</div>
<div class="result_display_" id="result_display__0">
<div id="project_buildstatus">
<table title="Repositories" class="repostatus">
<tr>
<td class="repo nowrap" rowspan="7">
<a href="/project/repository_state?project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repository=standard" title="Repository standard">standard</a>
</td>
<td class="nowrap">
<span class="icons-lorry inlineblock" title="Repository has been published"></span> i586
</td>
<td style="width: 1%">
<a href="/project/monitor?arch_i586=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&succeeded=1" class="nowrap" rel="nofollow">succeeded: 441</a>
<a href="/project/monitor?arch_i586=1&defaults=0&failed=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">failed: 7</a>
<a href="/project/monitor?arch_i586=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&unresolvable=1" class="nowrap" rel="nofollow">unresolvable: 4</a>
<a href="/project/monitor?arch_i586=1&defaults=0&disabled=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">disabled: 1</a>
<a href="/project/monitor?arch_i586=1&defaults=0&excluded=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">excluded: 3262</a>
</td>
</tr>
<tr>
<td class="nowrap">
<span class="icons-lorry inlineblock" title="Repository has been published"></span> ia64
</td>
<td style="width: 1%">
<a href="/project/monitor?arch_ia64=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&succeeded=1" class="nowrap" rel="nofollow">succeeded: 391</a>
<a href="/project/monitor?arch_ia64=1&defaults=0&failed=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">failed: 7</a>
<a href="/project/monitor?arch_ia64=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&unresolvable=1" class="nowrap" rel="nofollow">unresolvable: 26</a>
<a href="/project/monitor?arch_ia64=1&defaults=0&disabled=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">disabled: 2</a>
<a href="/project/monitor?arch_ia64=1&defaults=0&excluded=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">excluded: 3289</a>
</td>
</tr>
<tr>
<td class="nowrap">
<span class="icons-lorry inlineblock" title="Repository has been published"></span> ppc
</td>
<td style="width: 1%">
<a href="/project/monitor?arch_ppc=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&succeeded=1" class="nowrap" rel="nofollow">succeeded: 282</a>
<a href="/project/monitor?arch_ppc=1&defaults=0&failed=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">failed: 110</a>
<a href="/project/monitor?arch_ppc=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&unresolvable=1" class="nowrap" rel="nofollow">unresolvable: 30</a>
<a href="/project/monitor?arch_ppc=1&defaults=0&disabled=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">disabled: 3</a>
<a href="/project/monitor?arch_ppc=1&defaults=0&excluded=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">excluded: 3290</a>
</td>
</tr>
<tr>
<td class="nowrap">
<span class="icons-lorry inlineblock" title="Repository has been published"></span> ppc64
</td>
<td style="width: 1%">
<a href="/project/monitor?arch_ppc64=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&succeeded=1" class="nowrap" rel="nofollow">succeeded: 331</a>
<a href="/project/monitor?arch_ppc64=1&defaults=0&failed=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">failed: 77</a>
<a href="/project/monitor?arch_ppc64=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&unresolvable=1" class="nowrap" rel="nofollow">unresolvable: 21</a>
<a href="/project/monitor?arch_ppc64=1&defaults=0&disabled=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">disabled: 2</a>
<a href="/project/monitor?arch_ppc64=1&defaults=0&excluded=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">excluded: 3284</a>
</td>
</tr>
<tr>
<td class="nowrap">
<span class="icons-lorry inlineblock" title="Repository has been published"></span> s390
</td>
<td style="width: 1%">
<a href="/project/monitor?arch_s390=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&succeeded=1" class="nowrap" rel="nofollow">succeeded: 390</a>
<a href="/project/monitor?arch_s390=1&defaults=0&failed=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">failed: 10</a>
<a href="/project/monitor?arch_s390=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&unresolvable=1" class="nowrap" rel="nofollow">unresolvable: 16</a>
<a href="/project/monitor?arch_s390=1&defaults=0&disabled=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">disabled: 5</a>
<a href="/project/monitor?arch_s390=1&defaults=0&excluded=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">excluded: 3294</a>
</td>
</tr>
<tr>
<td class="nowrap">
<span class="icons-lorry inlineblock" title="Repository has been published"></span> s390x
</td>
<td style="width: 1%">
<a href="/project/monitor?arch_s390x=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&succeeded=1" class="nowrap" rel="nofollow">succeeded: 393</a>
<a href="/project/monitor?arch_s390x=1&defaults=0&failed=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">failed: 10</a>
<a href="/project/monitor?arch_s390x=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&unresolvable=1" class="nowrap" rel="nofollow">unresolvable: 20</a>
<a href="/project/monitor?arch_s390x=1&defaults=0&disabled=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">disabled: 2</a>
<a href="/project/monitor?arch_s390x=1&defaults=0&excluded=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">excluded: 3290</a>
</td>
</tr>
<tr>
<td class="nowrap">
<span class="icons-lorry inlineblock" title="Repository has been published"></span> x86_64
</td>
<td style="width: 1%">
<a href="/project/monitor?arch_x86_64=1&defaults=0&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1&succeeded=1" class="nowrap" rel="nofollow">succeeded: 457</a>
<a href="/project/monitor?arch_x86_64=1&defaults=0&failed=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">failed: 6</a>
<a href="/project/monitor?arch_x86_64=1&defaults=0&excluded=1&project=SUSE%3ASLE-11-SP2%3AUpdate%3ATest&repo_standard=1" class="nowrap" rel="nofollow">excluded: 3252</a>
</td>
</tr>
</table>
</div>
</div>
<script type="text/javascript">
//<![CDATA[
var tab_index_ = 0;
function update_build_result() {
$('#result_spinner__0').show();
$('#result_reload__0').hide();
$.ajax({
url: '/project/buildresult',
data: {
'project': 'SUSE:SLE-11-SP2:Update:Test',
'index': '',
},
success: function(data) {
$('#result_display__0').html(data);
},
error: function(data) {
$('#result_display__0').html('<p>No build results available</p>');
},
complete: function(data) {
$('#result_spinner__0').hide();
if (tab_index_ == 0) {
$('#result_reload__0').show();
}
}
});
}
$('#result_spinner__0').hide();
$('#result_reload__0').show();
//]]>
</script>
</div>
</div>
<!-- End: Main Content Area -->
<div style="clear: both;"></div>
<div id="footer" class="container_12">
<div class="box_content grid_3">
<strong class="grey-medium spacer1">Locations</strong>
<ul>
<li><a href="/project/list_public">Projects</a></li>
<li><a href="/search">Search</a></li>
<li><a href="/monitor">Status Monitor</a></li>
</ul>
</div>
<div class="box_content grid_3">
<strong class="grey-medium spacer1">Help</strong>
<ul>
<li><a href="http://en.opensuse.org/Portal:Build_Service">Open Build Service Portal</a></li>
<li><a href="http://en.opensuse.org/openSUSE:Build_Service_Tutorial">Building Packages</a></li>
<li><a href="http://en.opensuse.org/openSUSE:Specfile_guidelines">Writing spec Files</a></li>
<li><a href="http://en.opensuse.org/openSUSE:Submitting_bug_reports">Reporting a Bug</a></li>
<li><a href="http://forums.opensuse.org/english/other-forums/development/open-build-service-obs/">Forums</a></li>
</ul>
</div>
<div id="footer-legal" class="grid_12">
<p>
<a href="http://openbuildservice.org">Open Build Service (OBS)</a> is an <a href="http://www.opensuse.org">openSUSE project</a>.
</p>
</div>
</div>
</body>
</html>
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org