Skip navigation.

Wim Coekaerts

Syndicate content
Updated: 11 hours 11 min ago

Openstack with Oracle Linux and Oracle VM

Fri, 2014-05-16 12:48
The OpenStack Summit has been an exciting event. We announced the Oracle OpenStack Distribution with support for Oracle Linux and Oracle VM, and support included with Oracle Linux and Oracle VM Premier Support at no additional cost. The announcement was well received by our customers and partners. We’re pleased to continue the Oracle tradition of translating our enterprise experience into community contributions as we’ve done with Linux and Xen. Oracle is committed to ensuring choice for both our partners and customers.

A preview of OpenStack distribution (Havana) is now available on oracle.com for Oracle Linux (controller + compute) and Oracle VM (compute). We will follow this up with the production (GA) release in the next several months, including an update to IceHouse and later Juno. (whitepaper)

An OpenStack distribution contains several components that can be grouped into 2 major buckets (a) controller components, such as keystone, horizon, glance, cinder,.... (b) compute components such as nova and neutron. We provide support for the controller components on top of Oracle Linux and as part of Oracle Linux Premier Support. We provide support for the compute components on top of either Oracle Linux or Oracle VM (as part of Premier Support for both products).

By adding the Oracle OpenStack Distribution to Oracle Linux and Oracle VM, we can provide integrated support for all components in the stack including applications, database, middleware, guest OS, host OS, virtualization, and OpenStack – plus servers and storage. Our experience attacking the world’s toughest enterprise workloads means we focus on OpenStack stability, availability, performance, debugging and diagnostics. Oracle OpenStack customers and partners can immediately benefit from advanced features like Ksplice and DTrace from Oracle Linux and the hardening, testing, performance and stability of Oracle VM.

If you have chosen an OpenStack distribution other than Oracle’s, rest assured. Oracle will not attempt to force you to choose our OpenStack distribution by withholding support; we will provide the same high quality Oracle Linux and Oracle VM support no matter which OpenStack distribution you choose.

Furthermore, Oracle will continue to collaborate with Oracle’s OpenStack partners validating with Oracle Linux and Oracle VM. Our goal remains the same: jointly deliver great solutions and support experience for our mutual customers. We also look forward to working with other vendors to certify networking, storage, hypervisor and other plugins into the Oracle OpenStack Distribution.

Finally, we plan to follow a development model similar to the approach we use with Linux and the Unbreakable Enterprise Kernel. Our development work is focused on contributing upstream to the OpenStack community and we will pick up new releases of OpenStack after testing and validation.

It is an exciting time for OpenStack developers and users. We are thrilled that Oracle and our customers are part of it!

A good use-case for Oracle Ksplice

Thu, 2014-05-15 11:34
One of the advantages of Oracle Ksplice is that you can stick to a given version of a kernel for a very long time. We provide you with the security updates through our Ksplice technology for all the various kernels released so that there's no need for a reboot and also no need to install a newer kernel version that typically also contains new drivers or even new features. Zero downtime yet you are current. Ksplice updates are always based on critical bugfixes or security fixes, things you really want to apply. We do not use Ksplice to provide new driver updates or new features, it's purely focused on those patches that you really want to apply on your environment without downtime and risk of change.

The typical model for providing kernel errata (security/critical fixes) is through providing a newer version of the latest kernel in a "dot dot" release. For instance, for Oracle Linux 6 if the current latest "Red Hat Compatible kernel" is 2.6.32-431.1.2 and a security issue gets fixed, there will be a 2.6.32-431.3.1 (or so). The sysadmin then has to install the new kernel and reboot the server(s) in order to get that fix to be active. Now these "dot dot" release versions typically only contain security fixes or critical bugfixes so while a reboot is annoying and can have a significant time impact, the actual updates are very specific.

When updated versions of the OS are released (such as OL6 update 1, OL6 update 2,...) however, the change in the kernel can be more significant. For instance when you look at the lifecycle of Oracle Linux 6 with the "RHCK" versions. OL6 GA was shipping with kernel 2.6.32-71, update 1 2.6.32-131, update 2 2.6.32-220, update 3 2.6.32-279, update 4 2.6.32-358, update 5 2.6.32-431. Each of these kernels will have pretty significant changes. Aside from carrying forward the security fixes and critical bugfixes, they typically also contain new device drivers, new features backported into older kernels. In fact, if you look at the changelog of the RHCKs you will see features from kernels as current as 3.x backported into 2.6.32.

In this case, going from one version to another is a bigger deal for some customers that have a very conservative upgrade policy. However to be current with security updates one typically has to go to a newer version in order to get the errata. Security fixes are not backported to all older versions by default, while some vendors have a support option where they will support one or 2 other kernel versions, it's relatively selective.

With Ksplice however, we make the security/critical fix errata available for all the various kernels. Not just one or 2 selective versions. So you can be on any of these kernels, and without the need for a reboot, have the fixes available. That's choice and flexibility. It reduces risk of upgrading to newer kernels to get a fix, it reduces down time to zero and increases the security of your servers.

By the way, 2.6.32-71 was released 03-Jan-2011. Since then there were 45 kernels released (RHCK), with vulnerability fixes and critical fixes, so if you wanted to remain current, that would have resulted in 44 reboots for each server since 2011 (so 3.5 years). With Oracle Ksplice, you could still be running that 2.6.32-71 kernel from January 2011, without any reboot and be current with your CVEs. Imagine having 100's, if not 1000's of servers... time saved, cost saved...

To give you a concrete example, here is a list of all the different kernel versions (RHCK) for Oracle Linux 6 :

kernel-2.6.32-71
kernel-2.6.32-71.14.1
kernel-2.6.32-71.18.1
kernel-2.6.32-71.18.2
kernel-2.6.32-71.24.1
kernel-2.6.32-71.29.1
kernel-2.6.32-131.0.15
kernel-2.6.32-131.2.1
kernel-2.6.32-131.4.1
kernel-2.6.32-131.6.1
kernel-2.6.32-131.12.1
kernel-2.6.32-131.17.1
kernel-2.6.32-131.21.1
kernel-2.6.32-220.2.1
kernel-2.6.32-220.4.1
kernel-2.6.32-220.4.2
kernel-2.6.32-220.7.1
kernel-2.6.32-220.13.1
kernel-2.6.32-220.17.1
kernel-2.6.32-220.23.1
kernel-2.6.32-220
kernel-2.6.32-279.1.1
kernel-2.6.32-279.2.1
kernel-2.6.32-279.5.1
kernel-2.6.32-279.5.2
kernel-2.6.32-279.9.1
kernel-2.6.32-279.11.1
kernel-2.6.32-279.14.1
kernel-2.6.32-279.19.1
kernel-2.6.32-279.22.1
kernel-2.6.32-279
kernel-2.6.32-358.0.1
kernel-2.6.32-358.2.1
kernel-2.6.32-358.6.1
kernel-2.6.32-358.6.2
kernel-2.6.32-358.11.1
kernel-2.6.32-358.14.1
kernel-2.6.32-358.18.1
kernel-2.6.32-358.23.2
kernel-2.6.32-358
kernel-2.6.32-431.1.2
kernel-2.6.32-431.3.1
kernel-2.6.32-431.5.1
kernel-2.6.32-431.11.2
kernel-2.6.32-431.17.1
kernel-2.6.32-431

With Oracle Linux and Ksplice you could be running -any- of the above kernel versions in your production environments when a security vulnerability gets fixed, we will make a fix available for all of the above.

Here is a list of the latest Ksplice update packages for Oracle Linux 6 with RHCK, as you can see, all the kernels are there :

uptrack-updates-2.6.32-131.0.15.el6.x86_64.20140331-0
uptrack-updates-2.6.32-131.12.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-131.17.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-131.21.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-131.2.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-131.4.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-131.6.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-220.13.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-220.17.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-220.2.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-220.23.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-220.4.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-220.4.2.el6.x86_64.20140331-0
uptrack-updates-2.6.32-220.7.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-220.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.11.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.1.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.14.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.19.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.2.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.22.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.5.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.5.2.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.9.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-279.el6.x86_64.20140331-0
uptrack-updates-2.6.32-358.0.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-358.11.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-358.14.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-358.18.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-358.2.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-358.23.2.el6.x86_64.20140331-0
uptrack-updates-2.6.32-358.6.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-358.6.2.el6.x86_64.20140331-0
uptrack-updates-2.6.32-358.el6.x86_64.20140331-0
uptrack-updates-2.6.32-431.11.2.el6.x86_64.20140331-0
uptrack-updates-2.6.32-431.1.2.el6.x86_64.20140331-0
uptrack-updates-2.6.32-431.3.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-431.5.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-431.el6.x86_64.20140331-0
uptrack-updates-2.6.32-71.14.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-71.18.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-71.18.2.el6.x86_64.20140331-0
uptrack-updates-2.6.32-71.24.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-71.29.1.el6.x86_64.20140331-0
uptrack-updates-2.6.32-71.el6.x86_64.20140331-0

Unbreakable Linux Network APIs example

Thu, 2014-05-15 11:24
I posted a short blog entry about the recently released ULN APIs the other day with a sample of how to call the different APIs. Here is a concrete example to use the API to find a package in a channel and download it.

$ ./ulnget.py kernel-headers.2.6.32-71.29 ol6_x86_64_latest
Searching for 'kernel-headers.2.6.32-71.29' in channel 'ol6_x86_64_latest'

Logging in...
Logged in...
Retrieving all packages...
Found kernel-headers.2.6.32-71.29.1.el6
Getting package details...
Downloading https://uln.oracle.com/XMLRPC/GET-REQ/ol6_x86_64_latest/
kernel-headers-2.6.32-71.29.1.el6.x86_64.rpm...

Logged out...

The code for the above is pasted below, this is just a very simplistic example...

#!/usr/bin/python
try:
    import os
    import sys
    import getpass
    import datetime
    import xmlrpclib

except ImportError, e:
    raise ImportError (str(e) + ': Module  not found')

if len(sys.argv) != 3:
   print "Usage : ulnget.py [packagename] [channelname]"
   exit(1) 

search = str(sys.argv[1])
channelLabel = str(sys.argv[2])

print "Searching for '%s' in channel '%s'" % (search, channelLabel)

SERVER_URL = 'https://linux-update.oracle.com/rpc/api'

USERNAME = 'username'
PASSWORD = 'password'

# channelLabel = 'ol6_x86_64_latest'

client = xmlrpclib.Server(SERVER_URL)

print ""

# login
print "Logging in..."
sessionKey = client.auth.login(USERNAME,PASSWORD)
if len(sessionKey) != 43:
   print "Invalid %d sessionKey : '%s'" % sessionKey
   exit(1)

print "Logged in..." 

print "Retrieving all packages..."
packageList = client.channel.software.listAllPackages(sessionKey, channelLabel)

for package in packageList:
   packageName = '%s.%s-%s' % (package['package_name'],package['package_version']
      ,package['package_release'])
   if search in packageName:
      print "Found %s" % packageName
      pid = package['package_id']
      print "Getting package details..."
      packageDetail = client.packages.getDetails(sessionKey, pid)
      url = packageDetail['download_urls'][0]
      import  urllib2
      req = urllib2.Request(url,headers={'X-ULN-API-User-Key': sessionKey})
      try:
          print "Downloading %s..." %url
          response = urllib2.urlopen(req)
          contents = response.read()
      except urllib2.HTTPError, e:
          print
          print "HTTP error code  : %d" %e.code
      except Exception, e:
          print
          print str(e)

print ""

retval = client.auth.logout(sessionKey)
if retval == 1:
  print "Logged out..."
else:
  print "Failed to log out..."

Unbreakable Linux Network APIs available

Tue, 2014-05-13 14:37
Aside from the uln_channel tool that we recently released, we are now also supporting a number of webservices on ULN. A handful of useful APIs are available. Below is a little simple python example that works out of the box on Oracle Linux 6 (when you have an account on ULN) and a description of the currently available APIs. Note that the python code is very simplistic... I know no exception handling, wasn't the point ;)...

Additionally, the ULN integration with Spacewalk uses these APIs as well. See here

APIs :

client.auth.login(username,password) returns sessionKey 
client.errata.listCves(sessionKey, advisory) returns cveList
client.errata.applicableToChannels(sessionKey, advisory) returns channelList
client.channel.software.listLatestPackages(sessionKey, channelLabel) returns packageList
client.channel.software.listErrata(sessionKey, channelLabel) returns errataList
client.packages.listProvidingErrata(sessionKey, pid) returns errataList
client.channel.listSoftwareChannels(sessionKey) returns channelList
client.channel.software.listAllPackages(sessionKey, channelLabel) returns packageList
client.errata.listPackages(sessionKey, advisory) returns packageList
client.errata.getDetails(sessionKey, advisory) returns errataDetail
client.channel.software.getDetails(sessionKey, channelLabel) returns channelDetail
client.packages.getDetails(sessionKey, pid) returns packageDetail
client.auth.logout(sessionKey) returns retval

sample output of the code :

$ ./sample.py
Login : client.auth.login(username,password) returns sessionKey
Logged in...

List CVEs for a particular advisory : client.errata.listCves(sessionKey, advisory) returns cveList
Example : CVEs for advisory 'ELSA-2013-1100' : ['CVE-2013-2231']

List channels applicable to advisory : client.errata.applicableToChannels(sessionKey, advisory) returns channelList
Example : Channels applicable to advisory 'ELSA-2013-1100' : [{'channel_name': 'Oracle Linux 6 Latest (i386)', 'channel_label': 'ol6_i386_latest', 'parent_channel_id': ' ', 'channel_id': 941}, {'channel_name': 'Oracle Linux 6 Latest (x86_64)', 'channel_label': 'ol6_x86_64_latest', 'parent_channel_id': ' ', 'channel_id': 944}, {'channel_name': 'Oracle Linux 6 Update 4 Patch (i386)', 'channel_label': 'ol6_u4_i386_patch', 'parent_channel_id': ' ', 'channel_id': 1642}, {'channel_name': 'Oracle Linux 6 Update 4 Patch (x86_64)', 'channel_label': 'ol6_u4_x86_64_patch', 'parent_channel_id': ' ', 'channel_id': 1644}]

List latest packages in a given channel : client.channel.software.listLatestPackages(sessionKey, channelLabel) returns packageList
Example : Packages for channel 'ol6_x86_64_latest' returns 6801 packages

List errata in a given channel : client.channel.software.listErrata(sessionKey, channelLabel) returns errataList
Example : Errata in channel 'ol6_x86_64_latest' returns 1403 errata

List errata for a given package : client.packages.listProvidingErrata(sessionKey, pid) returns errataList
Example :
[{'errata_update_date': '2011-06-08 00:00:00', 'errata_advisory_type': 'Security Advisory', 'errata_synopsis': 'subversion security update', 'errata_advisory': 'ELSA-2011-0862', 'errata_last_modified_date': '2011-06-08 00:00:00', 'errata_issue_date': '2011-06-08 00:00:00'}]

List software channels available : client.channel.listSoftwareChannels(sessionKey) returns channelList
Example : List of channels returns '253' channels

List all packages for a given channel : client.channel.software.listAllPackages(sessionKey, channelLabel) returns packageList
Example : All packages for channel 'ol6_x86_64_latest' returns 25310 packages

List packages for a given advisory : client.errata.listPackages(sessionKey, advisory) returns packageList
Example : Packages for advisory 'ELSA-2013-1100' returns 12 packages

Details for a specific advisory : client.errata.getDetails(sessionKey, advisory) returns errataDetail
Example :
{'errata_update_date': '7/22/13', 'errata_topic': ' ', 'errata_type': 'Security Advisory', 'errata_severity': 'Important', 'errata_notes': ' ', 'errata_synopsis': 'qemu-kvm security update', 'errata_references': ' ', 'errata_last_modified_date': '2013-07-22 00:00:00', 'errata_issue_date': '7/22/13', 'errata_description': '[qemu-kvm-0.12.1.2-2.355.el6_4.6]\n- kvm-qga-cast-to-int-for-DWORD-type.patch [bz#980758]\n- kvm-qga-remove-undefined-behavior-in-ga_install_service.patch [bz#980758]\n- kvm-qga-diagnostic-output-should-go-to-stderr.patch [bz#980758]\n- kvm-qa_install_service-nest-error-paths-more-idiomatically.patch [bz#980758]\n- kvm-qga-escape-cmdline-args-when-registering-win32-service.patch [bz#980758]\n- Resolves: bz#980758\n (qemu-kvm: CVE-2013-2231 qemu: qemu-ga win32 service unquoted search path [rhel-6.4.z])'}

Details for a given channel : client.channel.software.getDetails(sessionKey, channelLabel) returns channelDetail
Example :
{'channel_description': 'All packages released for Oracle Linux 6 (x86_64), including the very latest updated packages', 'channel_summary': 'Oracle Linux 6 Latest (x86_64)', 'channel_arch_name': 'x86_64', 'metadata_urls': {'group': [{'url': 'https://uln-qa.oracle.com/XMLRPC/GET-REQ/ol6_x86_64_latest/repodata/comps.xml', 'checksum': '08ec74da7552f56814bc7f94d60e6d1c3d8d9ff9', 'checksum_type': 'sha', 'file_name': 'repodata/comps.xml'}], 'filelists': [{'url': 'https://uln-qa.oracle.com/XMLRPC/GET-REQ/ol6_x86_64_latest/repodata/filelists.xml.gz', 'checksum': '2fb7fe60c7ee4dc948bbc083c18ab065384e990f', 'checksum_type': 'sha', 'file_name': 'repodata/filelists.xml.gz'}], 'updateinfo': [{'url': 'https://uln-qa.oracle.com/XMLRPC/GET-REQ/ol6_x86_64_latest/repodata/updateinfo.xml.gz', 'checksum': '15b889640ad35067d99b15973bb71aa1dc33ab00', 'checksum_type': 'sha', 'file_name': 'repodata/updateinfo.xml.gz'}], 'primary': [{'url': 'https://uln-qa.oracle.com/XMLRPC/GET-REQ/ol6_x86_64_latest/repodata/primary.xml.gz', 'checksum': '21f7115120c03a9dbaf25c6e1e9e3d6288bf664f', 'checksum_type': 'sha', 'file_name': 'repodata/primary.xml.gz'}], 'repomd': [{'url': 'https://uln-qa.oracle.com/XMLRPC/GET-REQ/ol6_x86_64_latest/repodata/repomd.xml', 'file_name': 'repodata/repomd.xml'}], 'other': [{'url': 'https://uln-qa.oracle.com/XMLRPC/GET-REQ/ol6_x86_64_latest/repodata/other.xml.gz', 'checksum': '30a176c8509677b588863bf21d7b196941e866af', 'checksum_type': 'sha', 'file_name': 'repodata/other.xml.gz'}]}}

Details for a given package : client.packages.getDetails(sessionKey, pid) returns packageDetail
Example :
{'package_size': 5855337, 'package_arch_label': 'i686', 'package_cookie': '1307566435', 'package_md5sum': 'e74525b5bbaa9e637fe818f3f5777c02', 'package_name': 'subversion', 'package_summary': 'A Modern Concurrent Version Control System', 'package_epoch': ' ', 'package_checksums': [{'md5': 'e74525b5bbaa9e637fe818f3f5777c02'}], 'package_payload_size': 5857988, 'package_version': '1.6.11', 'package_license': 'ASL 1.1', 'package_vendor': 'Oracle America', 'package_release': '2.el6_1.4', 'package_last_modified_date': '2011-06-08 15:53:55', 'package_description': 'Subversion is a concurrent version control system which enables one\nor more users to collaborate in developing and maintaining a\nhierarchy of files and directories while keeping a history of all\nchanges. Subversion only stores the differences between versions,\ninstead of every complete file. Subversion is intended to be a\ncompelling replacement for CVS.', 'package_id': 2814035, 'providing_channels': ['ol6_x86_64_latest'], 'package_build_host': 'ca-build44.us.oracle.com', 'package_build_date': '2011-06-08 15:53:55', 'download_urls': ['https://uln-qa.oracle.com/XMLRPC/GET-REQ/ol6_x86_64_latest/subversion-1.6.11-2.el6_1.4.src.rpm'], 'package_file': 'subversion-1.6.11-2.el6_1.4.src.rpm'}

Logout : client.auth.logout(sessionKey) returns retval
Logged out...

Sample code :

#!/usr/bin/env python
try:
    import os
    import sys
    import getpass
    import datetime
    import xmlrpclib

except ImportError, e:
    raise ImportError (str(e) + ': Module  not found')

SERVER_URL = 'https://linux-update.oracle.com/rpc/api'

USERNAME = 'myusername@company.com'
PASSWORD = 'mypassword'

client = xmlrpclib.Server(SERVER_URL)


# login
print "Login : client.auth.login(username,password) returns sessionKey "
sessionKey = client.auth.login(USERNAME,PASSWORD)
if len(sessionKey) != 43:
   print "Invalid %d sessionKey : '%s'" % sessionKey
   exit(1)

print "Logged in..."

print ""
print ""
print ""


# list CVEs for an advisory
print "List CVEs for a particular advisory : client.errata.listCves(sessionKey, advisory)\
 returns cveList"
advisory = "ELSA-2013-1100"
cveList = client.errata.listCves(sessionKey, advisory)
print "Example : CVEs for advisory '%s' : %s" % (advisory, cveList)


print ""
print ""
print ""

# list channels for CVE
print "List channels applicable to advisory : \
client.errata.applicableToChannels(sessionKey, advisory) returns channelList"
channelList = client.errata.applicableToChannels(sessionKey, advisory)
print "Example : Channels applicable to advisory '%s' : %s" % (advisory, channelList)


print ""
print ""
print ""

# list latest packages in a channel
print "List latest packages in a given channel : \
client.channel.software.listLatestPackages(sessionKey, channelLabel) returns\
 packageList"
channelLabel= 'ol6_x86_64_latest'
packageList = client.channel.software.listLatestPackages(sessionKey, channelLabel)
print "Example : Packages for channel '%s' returns %d packages" %(channelLabel, 
 len(packageList))

print ""
print ""
print ""


# list errata in a channel
print "List errata in a given channel : \
client.channel.software.listErrata(sessionKey, channelLabel) returns errataList"
errataList = client.channel.software.listErrata(sessionKey, channelLabel)
print "Example : Errata in channel '%s' returns %d errata" %(channelLabel, len(errataList))

print ""
print ""
print ""

# list errata for a package with a specific id
print "List errata for a given package : client.packages.listProvidingErrata(sessionKey,
 pid) returns errataList"
pid = '2814035'
errataList = client.packages.listProvidingErrata(sessionKey, pid)
print "Example : \n%s\n" % errataList

print ""
print ""
print ""


# list software channels
print "List software channels available : client.channel.listSoftwareChannels(sessionKey)\
 returns channelList"
channelList = client.channel.listSoftwareChannels(sessionKey)
print "Example : List of channels returns '%d' channels" %(len(channelList))

print ""
print ""
print ""



# list all packages of a channel
print "List all packages for a given channel : \
client.channel.software.listAllPackages(sessionKey, channelLabel) returns packageList"
packageList = client.channel.software.listAllPackages(sessionKey, channelLabel)
print "Example : All packages for channel '%s' returns %d packages" %(channelLabel, 
len(packageList))

print ""
print ""
print ""


# list packages for an errata
print "List packages for a given advisory : client.errata.listPackages(sessionKey,
 advisory) returns packageList"
packageList = client.errata.listPackages(sessionKey, advisory)
print "Example : Packages for advisory '%s' returns %d packages" %(advisory, 
len(packageList))

print ""
print ""
print ""


# get errata details
print "Details for a specific advisory  : \
client.errata.getDetails(sessionKey, advisory) returns errataDetail"
errataDetail = client.errata.getDetails(sessionKey, advisory)
print "Example : \n%s\n" %errataDetail

print ""
print ""
print ""


# get channel details
print "Details for a given channel : \
client.channel.software.getDetails(sessionKey, channelLabel) returns channelDetail"
channelDetail = client.channel.software.getDetails(sessionKey, channelLabel)
print "Example : \n%s\n" % channelDetail

print ""
print ""
print ""


# get package details from package with an id
print "Details for a given package : client.packages.getDetails(sessionKey, pid) \
returns packageDetail"
packageDetail = client.packages.getDetails(sessionKey, pid)
print "Example : \n%s\n" % packageDetail

print ""
print ""
print ""


print "Logout : client.auth.logout(sessionKey) returns retval"
retval = client.auth.logout(sessionKey)
if retval == 1:
  print "Logged out..."
else:
  print "Failed to log out..."

Channel subscription from command-line support added to the Unbreakable Linux Network(ULN)

Tue, 2014-05-13 11:41
Until recently, to add channels to a server or to register a server as a yum-repository server, one had to log into ULN and manually do this. First a server had to be tagged as a yum server and then any channels that would be included, would have to be added to this server. While this is an easy task, it does involve logging into the website, and manually following a few steps and it could not be automated.

We provided an updated rhn-setup RPM that now adds a new tool called uln-channel which allows users with ULN access to enable a server as a yum server and also add/remove/list channels for this server. This will allow for easy automation.

The latest version of the rhn-setup rpm is rhn-setup-1.0.0.1-16.0.9.el6.noarch. The uln-channel rpm is currently only supported with Oracle Linux version 6.

# uln-channel -h
Usage: uln-channel [options]

Options:
  -c CHANNEL, --channel=CHANNEL
                        name of channel you want to (un)subscribe
  -a, --add             subscribe to channel
  -r, --remove          unsubscribe from channel
  -l, --list            list channels
  -b, --base            show base channel of a system
  -L, --available-channels
                        list all available child channels
  -v, --verbose         verbose output
  -u USER, --user=USER  your user name
  -p PASSWORD, --password=PASSWORD
                        your password
  --enable-yum-server   enable yum server setting
  --disable-yum-server  disable yum server setting
  -h, --help            show this help message and exit

# uln-channel --list
Username: wim@company.com
Password:
ol6_i386_UEK_latest
ol6_i386_ksplice
ol6_i386_latest

# uln-channel --base
Username: wim@company.com
Password:
ol6_i386_ksplice
ol6_i386_latest
ol6_i386_UEK_latest

# uln-channel --enable-yum-server
Username: wim@company.com
Password:

# uln-channel --disable-yum-server
Username: wim@company.com
Password:


# uln-channel --available-channels
Username: wim@company.com
Password:
 el3_i386_latest
el3_u8_i386_patch
el3_u8_x86_64_patch
el3_u9_i386_base
el3_u9_i386_patch
el3_u9_x86_64_base
el3_u9_x86_64_patch
el3_x86_64_latest
...
ol6_x86_64_Dtrace_BETA
ol6_x86_64_Dtrace_latest
ol6_x86_64_Dtrace_userspace_latest
ol6_x86_64_MySQL
ol6_x86_64_MySQL56
ol6_x86_64_UEKR3_latest
ol6_x86_64_UEK_BETA
ol6_x86_64_UEK_base
ol6_x86_64_UEK_latest
ol6_x86_64_addons
ol6_x86_64_gdm_multiseat
ol6_x86_64_ksplice
ol6_x86_64_latest
ol6_x86_64_mysql-ha-utils
ol6_x86_64_ofed_UEK
ol6_x86_64_oracle
ovm22_2.2.0_i386_base
ovm22_2.2.0_i386_patch
ovm22_2.2.1_i386_base
ovm22_2.2.1_i386_patch
ovm22_2.2.2_i386_base
ovm22_2.2.2_i386_patch
ovm22_2.2.3_i386_base
ovm22_2.2.3_i386_patch
ovm22_i386_latest
ovm22_i386_oracle
ovm2_2.1.0_i386_base
ovm2_2.1.0_i386_patch
ovm2_2.1.1_i386_base
ovm2_2.1.1_i386_patch
ovm2_2.1.2_i386_base
ovm2_2.1.2_i386_patch
ovm2_2.1.5_i386_base
ovm2_2.1.5_i386_patch
ovm2_i386_latest
ovm3_3.0.2_x86_64_base
ovm3_3.0.3_x86_64_base
ovm3_3.0.3_x86_64_patch
ovm3_3.0_x86_64_base
ovm3_3.0_x86_64_patch
ovm3_3.1.1_x86_64_base
ovm3_3.1.1_x86_64_patch
ovm3_3.2.1_x86_64_base
ovm3_3.2.1_x86_64_patch
ovm3_x86_64_latest

# uln-channel --add --channel=ol6_x86_64_oracle
Username: wim@company.com
Password:

# uln-channel --list
Username: wim@company.com
Password:
ol6_i386_UEK_latest
ol6_i386_ksplice
ol6_i386_latest
ol6_x86_64_oracle

OpenStack for Oracle Linux and Oracle VM

Tue, 2014-05-13 11:32
We just made an announcement today about support for OpenStack with Oracle Linux and Oracle VM. The press release can be found here.

Oracle E-Business Suite R12 Pre-Install RPM available for Oracle Linux 5 and 6

Thu, 2014-04-17 17:44
One of the things we have been focusing on with Oracle Linux for quite some time now, is making it easy to install and deploy Oracle products on top of it without having to worry about which RPMs to install and what the basic OS configuration needs to be.

A minimal Oracle Linux install contains a really small set of RPMs but typically not enough for a product to install on and a full/complete install contains way more packages than you need. While a full install is convenient, it also means that the likelihood of having to install an errata for a package is higher and as such the cost of patching and updating/maintaining systems increases.

In an effort to make it as easy as possible, we have created a number of pre-install RPM packages which don't really contain actual programs but they 're more or less dummy packages and a few configuration scripts. They are built around the concept that you have a minimal OL installation (configured to point to a yum repository) and all the RPMs/packages which the specific Oracle product requires to install cleanly and pass the pre-requisites will be dependencies for the pre-install script.

When you install the pre-install RPM, yum will calculate the dependencies, figure out which additional RPMs are needed beyond what's installed, download them and install them. The configuration scripts in the RPM will also set up a number of sysctl options, create the default user, etc. After installation of this pre-install RPM, you can confidently start the Oracle product installer.

We have released a pre-install RPM in the past for the Oracle Database (11g, 12c,..) and Oracle Enterprise Manager 12c agent. And we now also released a similar RPM for E-Business R12.

This RPM is available on both ULN and public-yum in the addons channel.

Easy access to Java SE 7 on Oracle Linux

Tue, 2014-04-08 12:10
In order to make it very easy to install Java SE 7 on Oracle Linux, we added a Java channel on ULN (http://linux.oracle.com). Here is a brief description of how to enable the channel and install Java on your system.

Enable the Java SE 7 ULN channel for Oracle Linux 6

- Start with a server or desktop installed with Oracle Linux 6 and registered with ULN (http://linux.oracle.com) for updates

This is typically using uln_register on your system.

- Log into ULN, go to the Systems tab for your server/desktop and click on Manage Subscriptions

-> Ensure your system is registered to the "Oracle Linux 6 Add ons (x86_64)" channel (it should appear in the 'Subscribed channels' list)

if your system is not registered with the above channel, add it :

-> Click on "Oracle Linux 6 Add ons (x86_64)" in the Available Channels tab and click on the right arrow to move it to Subscribed channels. -> Click on Save Subscriptions

- In order to register with the 'Java SE 7' channel, you first have to install a yum plugin to enable access to channels with licenses

# yum install yum-plugin-ulninfo
Loaded plugins: rhnplugin
This system is receiving updates from ULN.
ol6_x86_64_addons                                        | 1.2 kB     00:00     
ol6_x86_64_addons/primary                                |  44 kB     00:00     
ol6_x86_64_addons                                                       177/177
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package yum-plugin-ulninfo.noarch 0:0.2-9.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package                          Arch                 Version                    Repository                       Size
========================================================================================================================
Installing:
 yum-plugin-ulninfo               noarch               0.2-9.el6                  ol6_x86_64_addons                13 k

Transaction Summary
========================================================================================================================
Install       1 Package(s)

Total download size: 13 k
Installed size: 23 k
Is this ok [y/N]: y
Downloading Packages:
yum-plugin-ulninfo-0.2-9.el6.noarch.rpm                                                          |  13 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : yum-plugin-ulninfo-0.2-9.el6.noarch                                                                  1/1 
  Verifying  : yum-plugin-ulninfo-0.2-9.el6.noarch                                                                  1/1 

Installed:
  yum-plugin-ulninfo.noarch 0:0.2-9.el6                                                                                 

Complete!

- In future versions of Oracle Linux 6, this RPM will become part of the base channel and at that point you will no longer need to register with the Add ons channel to install yum-plugin-ulninfo

- Add the Java SE 7 channel subscription to your system in ULN

-> Click on "Java SE 7 for Oracle Linux 6 (x86_64) (Public)" in the Available Channels tab and click on the right arrow to move it to Subscribed channels

-> Click on Save Subscriptions

-> A popup will appear with the EULA for Java SE 7, click on Accept or Decline

- Now your system has access to the Java SE 7 channel. You can verify this by executing :

# yum repolist
Loaded plugins: rhnplugin, ulninfo
This system is receiving updates from ULN.
ol6_x86_64_JavaSE7_public:
By downloading the Java software, you acknowledge that your use of the Java software is 
subject to the Oracle Binary Code License Agreement for the Java SE Platform Products and 
JavaFX (which you acknowledge you have read and agree to) available 
at http://www.java.com/license.

ol6_x86_64_JavaSE7_public                                                                        | 1.2 kB     00:00     
ol6_x86_64_JavaSE7_public/primary                                                                | 1.9 kB     00:00     
ol6_x86_64_JavaSE7_public                                                                                           2/2
repo id                        repo name                                                                          status
ol6_x86_64_JavaSE7_public      Java SE 7 for Oracle Linux 6 (x86_64) (Public)                                          2
ol6_x86_64_UEKR3_latest        Unbreakable Enterprise Kernel Release 3 for Oracle Linux 6 (x86_64) - Latest          122
ol6_x86_64_addons              Oracle Linux 6 Add ons (x86_64)                                                       177
ol6_x86_64_ksplice             Ksplice for Oracle Linux 6 (x86_64)                                                 1,497
ol6_x86_64_latest              Oracle Linux 6 Latest (x86_64)                                                     25,093
repolist: 26,891

- To install Java SE 7 on your system, simply us yum install :

# yum install jdk
Loaded plugins: rhnplugin, ulninfo
This system is receiving updates from ULN.
ol6_x86_64_JavaSE7_public:
By downloading the Java software, you acknowledge that your use of the Java software is 
subject to the Oracle Binary Code License Agreement for the Java SE Platform Products
 and JavaFX (which you acknowledge you have read and agree to) 
available at http://www.java.com/license.

Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package jdk.x86_64 2000:1.7.0_51-fcs will be installed
--> Finished Dependency Resolution

Dependencies Resolved

========================================================================================================================
 Package           Arch                 Version                           Repository                               Size
========================================================================================================================
Installing:
 jdk               x86_64               2000:1.7.0_51-fcs                 ol6_x86_64_JavaSE7_public               117 M

Transaction Summary
========================================================================================================================
Install       1 Package(s)

Total download size: 117 M
Installed size: 193 M
Is this ok [y/N]: y
Downloading Packages:
jdk-1.7.0_51-fcs.x86_64.rpm                                                                                                         | 117 MB     02:27     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : 2000:jdk-1.7.0_51-fcs.x86_64                                                                                                            1/1 
Unpacking JAR files...
	rt.jar...
	jsse.jar...
	charsets.jar...
	tools.jar...
	localedata.jar...
	jfxrt.jar...
  Verifying  : 2000:jdk-1.7.0_51-fcs.x86_64                                                                                                            1/1 

Installed:
  jdk.x86_64 2000:1.7.0_51-fcs                                                                                                                             

Complete!

- You now have a completely install Java SE 7 on your Oracle Linux environment.

# ls /usr/java/jdk1.7.0_51/
bin  COPYRIGHT  db  include  jre  lib  LICENSE  man  README.html  release  src.zip  
THIRDPARTYLICENSEREADME-JAVAFX.txt  THIRDPARTYLICENSEREADME.txt