Author: nacx
Date: Tue Jan 16 10:45:34 2018
New Revision: 1821227
URL: http://svn.apache.org/viewvc?rev=1821227&view=rev
Log:
deploy jclouds site content
Added:
jclouds/site-content/blog/2018/
jclouds/site-content/blog/2018/01/
jclouds/site-content/blog/2018/01/16/
jclouds/site-content/blog/2018/01/16/keystone-v3/
jclouds/site-content/blog/2018/01/16/keystone-v3/index.html
Modified:
jclouds/site-content/blog/atom.xml
jclouds/site-content/blog/index.html
jclouds/site-content/blog/page2/index.html
jclouds/site-content/blog/page3/index.html
jclouds/site-content/blog/page4/index.html
jclouds/site-content/blog/page5/index.html
jclouds/site-content/blog/page6/index.html
jclouds/site-content/index.html
Added: jclouds/site-content/blog/2018/01/16/keystone-v3/index.html
URL:
http://svn.apache.org/viewvc/jclouds/site-content/blog/2018/01/16/keystone-v3/index.html?rev=1821227&view=auto
==============================================================================
--- jclouds/site-content/blog/2018/01/16/keystone-v3/index.html (added)
+++ jclouds/site-content/blog/2018/01/16/keystone-v3/index.html Tue Jan 16
10:45:34 2018
@@ -0,0 +1,331 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+<title>Apache jclouds® :: OpenStack Keystone V3 Support</title>
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta name="description" content="">
+<meta name="author" content="">
+
+<!--link rel="stylesheet/less" href="less/bootstrap.less" type="text/css" /-->
+<!--link rel="stylesheet/less" href="less/responsive.less" type="text/css" /-->
+<!--script src="js/less-1.3.3.min.js"></script-->
+<!--append â#!watchâ to the browser URL, then refresh the page. -->
+
+<link href="/css/bootstrap.min.css" rel="stylesheet">
+<link href="/css/style.css" rel="stylesheet">
+<link href="/css/syntax.css" rel="stylesheet">
+
+<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
+<!--[if lt IE 9]>
+<script src="js/html5shiv.js"></script>
+<![endif]-->
+
+<!-- Fav and touch icons -->
+<!--
+<link rel="apple-touch-icon-precomposed" sizes="144x144"
href="/img/apple-touch-icon-144-precomposed.png">
+<link rel="apple-touch-icon-precomposed" sizes="114x114"
href="/img/apple-touch-icon-114-precomposed.png">
+<link rel="apple-touch-icon-precomposed" sizes="72x72"
href="/img/apple-touch-icon-72-precomposed.png">
+<link rel="apple-touch-icon-precomposed"
href="/img/apple-touch-icon-57-precomposed.png">
+-->
+<link rel="shortcut icon" href="/favicon.ico">
+
+<link rel="alternate" type="application/atom+xml" href="/blog/atom.xml"
title="Blog Posts Feed">
+<link rel="alternate" type="application/atom+xml"
href="/releasenotes/atom.xml" title="Release Notes Feed">
+
+<script type="text/javascript" src="/js/jquery.min.js"></script>
+<script type="text/javascript" src="/js/bootstrap.min.js"></script>
+<script type="text/javascript" src="/js/toc.js"></script>
+
+<script type="text/javascript">
+ var _gaq = _gaq || [];
+ _gaq.push(['_setAccount', 'UA-8638379-1']);
+ _gaq.push(['_trackPageview']);
+
+ (function() {
+ var ga = document.createElement('script'); ga.type = 'text/javascript';
ga.async = true;
+ ga.src = ('https:' == document.location.protocol ? 'https://ssl' :
'http://www') + '.google-analytics.com/ga.js';
+ var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
+ })();
+</script>
+<script type="text/javascript">
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new
Date();a=s.createElement(o),
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
+
+ ga('create', 'UA-47106724-1', 'jclouds.apache.org');
+ ga('send', 'pageview');
+</script>
+
+ </head>
+ <body>
+ <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
+ <div class="container">
+ <div class="navbar-header">
+ <button type="button" class="navbar-toggle" data-toggle="collapse"
data-target="#bs-example-navbar-collapse-1">
+ <span class="sr-only">Toggle navigation</span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ <span class="icon-bar"></span>
+ </button>
+ <a class="navbar-brand" href="/">Apache jclouds ®</a>
+ </div>
+
+ <div class="collapse navbar-collapse"
id="bs-example-navbar-collapse-1">
+ <ul class="nav navbar-nav">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle"
data-toggle="dropdown">Getting Started<strong class="caret"></strong></a>
+ <ul class="dropdown-menu">
+ <li><a href="/start/what-is-jclouds/">What Is Apache
jclouds?</a></li>
+ <li><a href="/start/install/">Installation
Guide</a></li>
+ <li class="divider"></li>
+ <li><a href="/start/concepts/">Core Concepts</a></li>
+ <li><a href="/start/compute/">ComputeService</a></li>
+ <li><a href="/start/blobstore/">BlobStore</a></li>
+ <li><a
href="http://github.com/jclouds/jclouds-examples">Examples</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle"
data-toggle="dropdown">Documentation<strong class="caret"></strong></a>
+ <ul class="dropdown-menu">
+ <li><a href="/reference/providers/">Cloud
Providers</a></li>
+ <li><a href="/guides">User Guides</a></li>
+ <li><a
href="/reference/troubleshooting/">Troubleshooting</a></li>
+ <li><a
href="/reference/configuration/">Configuration</a></li>
+ <li><a href="/reference/logging/">Logging</a></li>
+ <li><a href="/reference/javadoc/">Javadoc</a></li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Developer Guides</li>
+ <li><a
href="https://cwiki.apache.org/confluence/display/JCLOUDS/">Wiki</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle"
data-toggle="dropdown">Community<strong class="caret"></strong></a>
+ <ul class="dropdown-menu">
+ <li><a href="/community/">Get In Touch!</a></li>
+ <li><a href="http://www.meetup.com/jclouds/">Attend An
Event</a></li>
+ <li><a href="/community/users/">Who Is Using
jclouds?</a></li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Contribute</li>
+ <li><a href="/reference/report-a-bug/">Report a
Bug</a></li>
+ <li><a
href="http://jclouds.ci.cloudbees.com">Continuous Integration</a></li>
+ <li><a
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute">How
To Contribute Code</a></li>
+ <li><a
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute+Documentation">How
To Contribute Documentation</a></li>
+ </ul>
+ </li>
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle"
data-toggle="dropdown">About Apache<strong class="caret"></strong></a>
+ <ul class="dropdown-menu">
+ <li><a href="http://www.apache.org">The Apache
Software Foundation</a></li>
+ <li><a
href="http://www.apache.org/licenses/">License</a></li>
+ <li><a
href="http://www.apache.org/foundation/contributing.html">Donations</a></li>
+ <li><a
href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
+ <li><a href="http://www.apache.org/security/">Report a
Vulnerability</a></li>
+ <li><a
href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
+ </ul>
+ </li>
+ <li><a href="/blog">Blog</a></li>
+ </ul>
+ <ul class="nav navbar-nav navbar-right">
+ <li class="dropdown">
+ <a href="#" class="dropdown-toggle"
data-toggle="dropdown">Release Notes<strong class="caret"></strong></a>
+ <ul class="dropdown-menu">
+ <!-- only keep the release notes for supported
versions in this list -->
+ <li><a href="/releasenotes/2.0.3">2.0.3</a></li>
+ <li><a href="/releasenotes/2.0.2">2.0.2</a></li>
+ <li><a href="/releasenotes/2.0.1">2.0.1</a></li>
+ <li><a href="/releasenotes/2.0.0">2.0.0</a></li>
+ <li><a href="/releasenotes/1.9.3">1.9.3</a></li>
+ <li><a href="/releasenotes/1.9.2">1.9.2</a></li>
+ <li><a href="/releasenotes/1.9.1">1.9.1</a></li>
+ <li><a href="/releasenotes/1.9.0">1.9.0</a></li>
+ <li class="divider"></li>
+ <li class="dropdown-header">Previous releases</li>
+ <li><a href="/releasenotes">Release archive</a></li>
+ </ul>
+ </li>
+ <li>
+ <div>
+ <a class="btn btn-success navbar-btn"
href="/start/install/">
+ <span class="glyphicon glyphicon-download"></span>
+ Install
+ </a>
+ </div>
+ </li>
+ </ul>
+ </div>
+ </div>
+</nav>
+
+ <div class="container">
+ <div class="page-header">
+ <h1>OpenStack Keystone V3 Support</h1>
+ <span class="text-muted">16 January 2018, by <a
href="https://twitter.com/IgnasiBarrera">Ignasi Barrera</a></span>
+ </div>
+ <p>In the last few months, the jclouds community has been working
hard on adding support for <strong>OpenStack Keystone V3</strong>. This has not
been easy, as all the existing OpenStack APIs depend on it and we try hard to
keep our APIs backwards-compatible. We wanted a clean solution that allowed
users to upgrade with minimal changes required to existing code.</p>
+
+<p>After lots of work, we're finally there and are very happy to announce
that, starting from the upcoming <code>2.1.0</code> release, jclouds will also
support version 3 of the OpenStack Keystone API!</p>
+
+<!--more-->
+
+
+<p>No new dependencies will be required to use the OpenStack Keystone V3 API:
<code>openstack-keystone</code> contains the code for both V2 and V3, so all
jclouds providers and APIs can support both versions.</p>
+
+<h1>Configuring OpenStack services to use Keystone V3</h1>
+
+<p>Configuring OpenStack services to use Keystone V3 is pretty
straightforward. Just create your jclouds <a
href="/start/concepts/">context</a> with the following configuration
property:</p>
+
+<div class="highlight"><pre><code class="java"><span
class="n">Properties</span> <span class="n">overrides</span> <span
class="o">=</span> <span class="k">new</span> <span
class="n">Properties</span><span class="o">();</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">KEYSTONE_VERSION</span><span class="o">,</span> <span
class="s">"3"</span><span class="o">);</span>
+</code></pre></div>
+
+
+<h3>Configuring authentication</h3>
+
+<p>Keystone V3 supports several authentication mechanisms, which provide
authentication tokens with different permissions. It is important to configure
the correct authentication method, otherwise some operations offered by the
Keystone API might not be available.</p>
+
+<p>By default, jclouds uses <strong>password authentication with unscoped
authorization</strong>. Project or domain authorization scopes can be
configured by setting the <code>KeystoneProperties.SCOPE</code> property when
creating your jclouds context, for example:</p>
+
+<div class="highlight"><pre><code class="java"><span
class="n">Properties</span> <span class="n">overrides</span> <span
class="o">=</span> <span class="k">new</span> <span
class="n">Properties</span><span class="o">();</span>
+<span class="c1">// Project scoped authorization (can use the project name or
the ID)</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">SCOPE</span><span class="o">,</span> <span
class="s">"project:jclouds"</span><span class="o">);</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">SCOPE</span><span class="o">,</span> <span
class="s">"projectId:2f9b30f706bc45d7923e055567be2e98"</span><span
class="o">);</span>
+<span class="c1">// Domain scoped authorization (can use the domain name or
the ID)</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">SCOPE</span><span class="o">,</span> <span
class="s">"domain:default"</span><span class="o">);</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">SCOPE</span><span class="o">,</span> <span
class="s">"domainId:2f9b30f706bc45d7923e055567be2e98"</span><span
class="o">);</span>
+</code></pre></div>
+
+
+<p>Credentials in Keystone V3 must include the <code>domain</code> name and
the <code>username</code>, as shown above.</p>
+
+<h1>Using Keystone V3 APIs</h1>
+
+<p>If you are using <code>openstack-nova</code> or other OpenStack APIs,
configuring the properties above will suffice. This section describes changes
needed only if you are using the Keystone API <strong>directly</strong>.</p>
+
+<p>In order to use the <code>openstack-keystone</code> API to connect to
Keystone V3, use the <code>openstack-keystone-3</code> API ID when creating the
context. For example:</p>
+
+<div class="highlight"><pre><code class="java"><span
class="n">KeystoneApi</span> <span class="n">keystone</span> <span
class="o">=</span> <span class="n">ContextBuilder</span><span
class="o">.</span><span class="na">newBuilder</span><span
class="o">(</span><span class="s">"openstack-keystone-3"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">endpoint</span><span
class="o">(</span><span
class="s">"http://openstack-keystone/identity/v3"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">credentials</span><span
class="o">(</span><span class="s">"domain:admin"</span><span
class="o">,</span> <span class="s">"password"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">overrides</span><span
class="o">(</span><span class="n">overrides</span><span class="o">)</span>
+ <span class="o">.</span><span class="na">modules</span><span
class="o">(</span><span class="n">ImmutableSet</span><span
class="o">.</span><span class="na">of</span><span class="o">(</span><span
class="k">new</span> <span class="n">SLF4JLoggingModule</span><span
class="o">()))</span>
+ <span class="o">.</span><span class="na">buildApi</span><span
class="o">(</span><span class="n">KeystoneApi</span><span
class="o">.</span><span class="na">class</span><span class="o">);</span>
+</code></pre></div>
+
+
+<h3>Invoking Keystone API methods that use PATCH operations</h3>
+
+<p>In the Keystone V3 API, most of the update operations are carried out by
sending <code>PATCH</code> HTTP requests. The <code>PATCH</code> verb, however,
is not supported by jclouds' default Java HTTP driver. If you plan to use such
API methods, you will use an HTTP driver with support for <code>PATCH</code>,
such as the <a
href="https://github.com/jclouds/jclouds/tree/master/drivers/okhttp">OkHttp</a>
or <a
href="https://github.com/jclouds/jclouds/tree/master/drivers/apachehc">ApacheHC</a>
drivers.</p>
+
+<p>To configure an HTTP driver, add the corresponding module to the list of
modules passed to the <code>ContextBuilder</code> when creating your jclouds
context. For example:</p>
+
+<div class="highlight"><pre><code class="java"><span
class="n">KeystoneApi</span> <span class="n">keystone</span> <span
class="o">=</span> <span class="n">ContextBuilder</span><span
class="o">.</span><span class="na">newBuilder</span><span
class="o">(</span><span class="s">"openstack-keystone-3"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">endpoint</span><span
class="o">(</span><span
class="s">"http://openstack-keystone/identity/v3"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">credentials</span><span
class="o">(</span><span class="s">"domain:admin"</span><span
class="o">,</span> <span class="s">"password"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">overrides</span><span
class="o">(</span><span class="n">overrides</span><span class="o">)</span>
+ <span class="o">.</span><span class="na">modules</span><span
class="o">(</span><span class="n">ImmutableSet</span><span
class="o">.</span><span class="na">of</span><span class="o">(</span><span
class="k">new</span> <span class="n">SLF4JLoggingModule</span><span
class="o">(),</span> <span class="k">new</span> <span
class="n">OkHttpCommandExecutorServiceModule</span><span class="o">()))</span>
<span class="c1">// use OkHttp driver</span>
+ <span class="o">.</span><span class="na">buildApi</span><span
class="o">(</span><span class="n">KeystoneApi</span><span
class="o">.</span><span class="na">class</span><span class="o">);</span>
+</code></pre></div>
+
+
+<h1>Notes and breaking changes</h1>
+
+<p>Supporting both the V2 and V3 Keystone APIs required a major refactor of
the <code>openstack-keystone</code> API. Many packages and classes have been
renamed, moved and deleted as a result. If your code uses constants or other
global classes, you may need to update the following package references:</p>
+
+<ul>
+<li>Class <code>KeystoneProperties</code> has been moved to
<code>org.jclouds.openstack.keystone.config</code>.</li>
+<li>Class <code>CredentialTypes</code> has been moved to
<code>org.jclouds.openstack.keystone.auth.config</code>.</li>
+<li>The <code>KeystoneAuthenticationModule</code> and the
<code>AuthenticationApiModule</code> have been refactored and generalised into:
+
+<ul>
+<li><code>AuthenticationModule</code> - Providing authentication services to
all OpenStack APIs and providers.</li>
+<li><code>ServiceCatalogModule</code> - Providing endpoint resolution to all
OpenStack APIs and providers.</li>
+</ul>
+</li>
+</ul>
+
+
+<p>Use <code>AuthenticationModule</code> and <code>ServiceCatalogModule</code>
when developing OpenStack APIs.</p>
+
+
+ <div id="comments">
+ <hr/>
+ <div id="disqus_thread"></div>
+<script type="text/javascript">
+var disqus_shortname = 'jclouds';
+/* * * DON'T EDIT BELOW THIS LINE * * */
+(function() {
+ var dsq = document.createElement('script'); dsq.type = 'text/javascript';
dsq.async = true;
+ dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
+ (document.getElementsByTagName('head')[0] ||
document.getElementsByTagName('body')[0]).appendChild(dsq);
+})();
+</script>
+<noscript>Please enable JavaScript to view the <a
href="http://disqus.com/?ref_noscript">Comments powered by
Disqus.</a></noscript>
+<a href="http://disqus.com" class="dsq-brlink">Comments powered by <span
class="logo-disqus">Disqus</span></a>
+
+ </div>
+
+ <div class="row clearfix">
+ <div id="footer" class="col-md-12 column">
+ <div id="footer">
+ <hr/>
+ <div class="row clearfix">
+ <div class="col-md-2 column">
+ <p class="text-center">
+ <a class="text-primary" href="/start/">Getting Started</a>
+ </p>
+ </div>
+ <div class="col-md-2 column">
+ <p class="text-center">
+ <a class="text-primary" href="/reference/report-a-bug/">Report
a Bug</a>
+ </p>
+ </div>
+ <div class="col-md-2 column">
+ <p class="text-center">
+ <a
href="https://github.com/jclouds/jclouds-site/edit/master/_posts/2018-01-16-keystone-v3.md">Fix
This Page</a><a class="text-primary"
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute+Documentation"><sup>*</sup></a>
+ </p>
+ </div>
+ <div class="col-md-2 column">
+ <p class="text-center">
+ <a class="text-primary"
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute">Contribute
Code</a>
+ </p>
+ </div>
+ <div class="col-md-2 column">
+ <p class="text-center">
+ <a class="text-primary" href="/community/">Contact Us</a>
+ </p>
+ </div>
+ <div class="col-md-2 column">
+ <p class="text-center">
+ <a class="text-primary"
href="https://twitter.com/jclouds">Follow Us</a>
+ </p>
+ </div>
+ </div>
+ <hr style="margin-top: 10px"/>
+ <div class="row clearfix">
+ <div class="col-md-12 column">
+ <p class="text-center">
+ Copyright © 2011-2014 <a href="http://www.apache.org">The
Apache Software Foundation</a>. All Rights Reserved.
+ </p>
+ <p class="text-center">
+ Apache, jclouds, Apache jclouds, the jclouds logo, and the
Apache feather logos are registered trademarks or trademarks of the Apache
Software Foundation.
+ </p>
+ <p class="text-center">
+ <img src="/img/Apache_Logo.png" height="120" />
+ </p>
+ <p class="text-center">
+ <a href="https://donate.apache.org/" title="Support Apache">
+ <img src="/img/support-apache.png" height="120" />
+ </a>
+ </p>
+ <br/>
+ </div>
+ </div>
+</div>
+
+ </div>
+ </div>
+ </div>
+ </body>
+</html>
Modified: jclouds/site-content/blog/atom.xml
URL:
http://svn.apache.org/viewvc/jclouds/site-content/blog/atom.xml?rev=1821227&r1=1821226&r2=1821227&view=diff
==============================================================================
--- jclouds/site-content/blog/atom.xml (original)
+++ jclouds/site-content/blog/atom.xml Tue Jan 16 10:45:34 2018
@@ -8,6 +8,98 @@
<entry>
+ <id>https://jclouds.apache.org/blog/2018/01/16/keystone-v3</id>
+ <title type="html"><![CDATA[OpenStack Keystone V3 Support]]></title>
+ <link href="https://jclouds.apache.org/blog/2018/01/16/keystone-v3"/>
+ <updated>2018-01-16T00:00:00Z</updated>
+ <content type="html"><![CDATA[<p>In the last few months, the jclouds
community has been working hard on adding support for <strong>OpenStack
Keystone V3</strong>. This has not been easy, as all the existing OpenStack
APIs depend on it and we try hard to keep our APIs backwards-compatible. We
wanted a clean solution that allowed users to upgrade with minimal changes
required to existing code.</p>
+
+<p>After lots of work, we're finally there and are very happy to announce
that, starting from the upcoming <code>2.1.0</code> release, jclouds will also
support version 3 of the OpenStack Keystone API!</p>
+
+<!--more-->
+
+
+<p>No new dependencies will be required to use the OpenStack Keystone V3 API:
<code>openstack-keystone</code> contains the code for both V2 and V3, so all
jclouds providers and APIs can support both versions.</p>
+
+<h1>Configuring OpenStack services to use Keystone V3</h1>
+
+<p>Configuring OpenStack services to use Keystone V3 is pretty
straightforward. Just create your jclouds <a
href="/start/concepts/">context</a> with the following configuration
property:</p>
+
+<div class="highlight"><pre><code class="java"><span
class="n">Properties</span> <span class="n">overrides</span> <span
class="o">=</span> <span class="k">new</span> <span
class="n">Properties</span><span class="o">();</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">KEYSTONE_VERSION</span><span class="o">,</span> <span
class="s">"3"</span><span class="o">);</span>
+</code></pre></div>
+
+
+<h3>Configuring authentication</h3>
+
+<p>Keystone V3 supports several authentication mechanisms, which provide
authentication tokens with different permissions. It is important to configure
the correct authentication method, otherwise some operations offered by the
Keystone API might not be available.</p>
+
+<p>By default, jclouds uses <strong>password authentication with unscoped
authorization</strong>. Project or domain authorization scopes can be
configured by setting the <code>KeystoneProperties.SCOPE</code> property when
creating your jclouds context, for example:</p>
+
+<div class="highlight"><pre><code class="java"><span
class="n">Properties</span> <span class="n">overrides</span> <span
class="o">=</span> <span class="k">new</span> <span
class="n">Properties</span><span class="o">();</span>
+<span class="c1">// Project scoped authorization (can use the project name or
the ID)</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">SCOPE</span><span class="o">,</span> <span
class="s">"project:jclouds"</span><span class="o">);</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">SCOPE</span><span class="o">,</span> <span
class="s">"projectId:2f9b30f706bc45d7923e055567be2e98"</span><span
class="o">);</span>
+<span class="c1">// Domain scoped authorization (can use the domain name or
the ID)</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">SCOPE</span><span class="o">,</span> <span
class="s">"domain:default"</span><span class="o">);</span>
+<span class="n">overrides</span><span class="o">.</span><span
class="na">put</span><span class="o">(</span><span
class="n">KeystoneProperties</span><span class="o">.</span><span
class="na">SCOPE</span><span class="o">,</span> <span
class="s">"domainId:2f9b30f706bc45d7923e055567be2e98"</span><span
class="o">);</span>
+</code></pre></div>
+
+
+<p>Credentials in Keystone V3 must include the <code>domain</code> name and
the <code>username</code>, as shown above.</p>
+
+<h1>Using Keystone V3 APIs</h1>
+
+<p>If you are using <code>openstack-nova</code> or other OpenStack APIs,
configuring the properties above will suffice. This section describes changes
needed only if you are using the Keystone API <strong>directly</strong>.</p>
+
+<p>In order to use the <code>openstack-keystone</code> API to connect to
Keystone V3, use the <code>openstack-keystone-3</code> API ID when creating the
context. For example:</p>
+
+<div class="highlight"><pre><code class="java"><span
class="n">KeystoneApi</span> <span class="n">keystone</span> <span
class="o">=</span> <span class="n">ContextBuilder</span><span
class="o">.</span><span class="na">newBuilder</span><span
class="o">(</span><span class="s">"openstack-keystone-3"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">endpoint</span><span
class="o">(</span><span
class="s">"http://openstack-keystone/identity/v3"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">credentials</span><span
class="o">(</span><span class="s">"domain:admin"</span><span
class="o">,</span> <span class="s">"password"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">overrides</span><span
class="o">(</span><span class="n">overrides</span><span class="o">)</span>
+ <span class="o">.</span><span class="na">modules</span><span
class="o">(</span><span class="n">ImmutableSet</span><span
class="o">.</span><span class="na">of</span><span class="o">(</span><span
class="k">new</span> <span class="n">SLF4JLoggingModule</span><span
class="o">()))</span>
+ <span class="o">.</span><span class="na">buildApi</span><span
class="o">(</span><span class="n">KeystoneApi</span><span
class="o">.</span><span class="na">class</span><span class="o">);</span>
+</code></pre></div>
+
+
+<h3>Invoking Keystone API methods that use PATCH operations</h3>
+
+<p>In the Keystone V3 API, most of the update operations are carried out by
sending <code>PATCH</code> HTTP requests. The <code>PATCH</code> verb, however,
is not supported by jclouds' default Java HTTP driver. If you plan to use such
API methods, you will use an HTTP driver with support for <code>PATCH</code>,
such as the <a
href="https://github.com/jclouds/jclouds/tree/master/drivers/okhttp">OkHttp</a>
or <a
href="https://github.com/jclouds/jclouds/tree/master/drivers/apachehc">ApacheHC</a>
drivers.</p>
+
+<p>To configure an HTTP driver, add the corresponding module to the list of
modules passed to the <code>ContextBuilder</code> when creating your jclouds
context. For example:</p>
+
+<div class="highlight"><pre><code class="java"><span
class="n">KeystoneApi</span> <span class="n">keystone</span> <span
class="o">=</span> <span class="n">ContextBuilder</span><span
class="o">.</span><span class="na">newBuilder</span><span
class="o">(</span><span class="s">"openstack-keystone-3"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">endpoint</span><span
class="o">(</span><span
class="s">"http://openstack-keystone/identity/v3"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">credentials</span><span
class="o">(</span><span class="s">"domain:admin"</span><span
class="o">,</span> <span class="s">"password"</span><span
class="o">)</span>
+ <span class="o">.</span><span class="na">overrides</span><span
class="o">(</span><span class="n">overrides</span><span class="o">)</span>
+ <span class="o">.</span><span class="na">modules</span><span
class="o">(</span><span class="n">ImmutableSet</span><span
class="o">.</span><span class="na">of</span><span class="o">(</span><span
class="k">new</span> <span class="n">SLF4JLoggingModule</span><span
class="o">(),</span> <span class="k">new</span> <span
class="n">OkHttpCommandExecutorServiceModule</span><span class="o">()))</span>
<span class="c1">// use OkHttp driver</span>
+ <span class="o">.</span><span class="na">buildApi</span><span
class="o">(</span><span class="n">KeystoneApi</span><span
class="o">.</span><span class="na">class</span><span class="o">);</span>
+</code></pre></div>
+
+
+<h1>Notes and breaking changes</h1>
+
+<p>Supporting both the V2 and V3 Keystone APIs required a major refactor of
the <code>openstack-keystone</code> API. Many packages and classes have been
renamed, moved and deleted as a result. If your code uses constants or other
global classes, you may need to update the following package references:</p>
+
+<ul>
+<li>Class <code>KeystoneProperties</code> has been moved to
<code>org.jclouds.openstack.keystone.config</code>.</li>
+<li>Class <code>CredentialTypes</code> has been moved to
<code>org.jclouds.openstack.keystone.auth.config</code>.</li>
+<li>The <code>KeystoneAuthenticationModule</code> and the
<code>AuthenticationApiModule</code> have been refactored and generalised into:
+
+<ul>
+<li><code>AuthenticationModule</code> - Providing authentication services to
all OpenStack APIs and providers.</li>
+<li><code>ServiceCatalogModule</code> - Providing endpoint resolution to all
OpenStack APIs and providers.</li>
+</ul>
+</li>
+</ul>
+
+
+<p>Use <code>AuthenticationModule</code> and <code>ServiceCatalogModule</code>
when developing OpenStack APIs.</p>
+]]></content>
+ </entry>
+
+ <entry>
<id>https://jclouds.apache.org/blog/2016/08/22/arbitrary-cpu-ram</id>
<title type="html"><![CDATA[Adding support for arbitrary CPU and RAM to
ComputeService]]></title>
<link href="https://jclouds.apache.org/blog/2016/08/22/arbitrary-cpu-ram"/>
@@ -1044,61 +1136,4 @@ These classes are used to represent Open
]]></content>
</entry>
- <entry>
-
<id>https://jclouds.apache.org/blog/2012/03/23/take-a-peek-at-vcloud-director-1-5-openstack-and</id>
- <title type="html"><![CDATA[Take a peek at vCloud Director 1.5, OpenStack,
and VirtualBox]]></title>
- <link
href="https://jclouds.apache.org/blog/2012/03/23/take-a-peek-at-vcloud-director-1-5-openstack-and"/>
- <updated>2012-03-23T00:00:00Z</updated>
- <content type="html"><![CDATA[<p>The jclouds team have been working very
hard lately, particularly on a few new apis. We've decided to cage them no
longer and cut jclouds 1.5.0-alpha.1. Most notably, we've added the
openstack-nova api, and three new providers, all of which discovered via <a
href="http://docs.openstack.org/api/openstack-identity-service/2.0/content/">OpenStack
Keystone v2.0</a>.</p>
-
-<ul>
-<li>trystack-nova</li>
-<li>hpcloud-compute</li>
-<li>hpcloud-objectstorage</li>
-</ul>
-
-
-<p>Here's how to boot up a new machine and add your login using the new <a
href="https://hpcloud.com/">hpcloud-compute</a> provider in clojure:</p>
-
-<div class="highlight"><pre><code class="clojure"><span
class="p">(</span><span class="nf">use</span> <span class="o">'</span><span
class="ss">'org.jclouds.compute2</span><span class="p">)</span>
-<span class="p">(</span><span class="nb">import </span><span
class="o">'</span><span
class="ss">'org.jclouds.scriptbuilder.statements.login.AdminAccess</span><span
class="p">)</span>
-<span class="p">(</span><span class="k">def </span><span
class="nv">compute</span> <span class="p">(</span><span
class="nf">compute-service</span> <span
class="s">"hpcloud-compute"</span> <span
class="s">"tenantId:ACCESSKEY"</span> <span
class="s">"SECRETKEY"</span> <span class="ss">:slf4j</span> <span
class="ss">:sshj</span><span class="p">))</span>
-<span class="p">(</span><span class="nf">create-node</span> <span
class="nv">compute</span> <span class="s">"test"</span> <span
class="p">(</span><span class="nf">build-template</span> <span
class="nv">compute</span> <span class="p">{</span> <span
class="ss">:run-script</span> <span class="p">(</span><span
class="nf">AdminAccess/standard</span><span class="p">)</span> <span
class="p">}</span> <span class="p">))</span>
-</code></pre></div>
-
-
-<p>Here's an example of how to do the same on <a
href="https://trystack.org/">TryStack</a>, authenticating w/ user & pass as
opposed to key, via our <a
href="https://github.com/jclouds/jclouds-examples/tree/master/compute-basics">java
example</a>:</p>
-
-<div class="highlight"><pre><code class="bash">java -jar
target/compute-basics-jar-with-dependencies.jar trystack-nova tenantId:user
password mygroup add
-</code></pre></div>
-
-
-<p>In the group org.jclouds.labs, you'll find two more new and notable members
of the jclouds family:</p>
-
-<ul>
-<li><strong>vcloud-director:</strong> supports 250 user and admin operations
defined in the <a
href="http://www.vmware.com/products/vcloud-director/overview.html">vCloud
Director</a> 1.5 ReST API</li>
-<li><strong>virtualbox:</strong> start a group of vms on your laptop, provided
an iso location for Ubuntu</li>
-</ul>
-
-
-<p>You can try out virtualbox like any other api. For example, you can use the
clojure above, only changing how you create the connection slightly:</p>
-
-<div class="highlight"><pre><code class="clojure"><span
class="p">(</span><span class="k">def </span><span class="nv">compute</span>
<span class="p">(</span><span class="nf">compute-service</span> <span
class="s">"virtualbox"</span> <span
class="s">"administrator"</span> <span
class="s">"12345"</span> <span class="ss">:sshj</span> <span
class="ss">:slf4j</span><span class="p">))</span>
-</code></pre></div>
-
-
-<p>The code in labs will certainly change before we release a beta, but feel
free to check them out. Meanwhile, you can try them out and give us feedback on
#jclouds irc freenode or jclouds-dev google group!</p>
-
-<p>Finally, many thanks to the <a
href="https://github.com/jclouds/jclouds/compare/1.4.x...1.5.x">dozen
contributors</a> who's work is in this alpha, and particularly HP and VMware
for sponsoring substantial effort.</p>
-
-<p>Oh, and don't forget to clean up your nodes :)</p>
-
-<div class="highlight"><pre><code class="clojure"><span
class="p">(</span><span class="nf">destroy-nodes-matching</span> <span
class="nv">compute</span> <span class="p">(</span><span class="nb">constantly
</span><span class="nv">true</span><span class="p">))</span>
-</code></pre></div>
-
-
-
-]]></content>
- </entry>
-
</feed>
Modified: jclouds/site-content/blog/index.html
URL:
http://svn.apache.org/viewvc/jclouds/site-content/blog/index.html?rev=1821227&r1=1821226&r2=1821227&view=diff
==============================================================================
--- jclouds/site-content/blog/index.html (original)
+++ jclouds/site-content/blog/index.html Tue Jan 16 10:45:34 2018
@@ -165,6 +165,11 @@
<p><a
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute+Documentation">Write
a guest post!</a></p>
+<h3><a class="text-primary" href="/blog/2018/01/16/keystone-v3">OpenStack
Keystone V3 Support</a></h3>
+<span class="text-muted">16 January 2018, by <a
href="https://twitter.com/IgnasiBarrera">Ignasi Barrera</a></span>
+<p>In the last few months, the jclouds community has been working hard on
adding support for OpenStack Keystone V3. This has not been easy, as all the
existing OpenStack APIs depend on it and we try hard to keep our APIs
backwards-compatible. We wanted a clean solution that allowed users to upgrade
with minimal changes required to existing code.
+</p>
+
<h3><a class="text-primary" href="/blog/2016/08/22/arbitrary-cpu-ram">Adding
support for arbitrary CPU and RAM to ComputeService</a></h3>
<span class="text-muted">22 August 2016, by <a
href="https://github.com/ivanlomba">Iván Lomba</a></span>
<p>Through of a Google Summer of Code project, Apache jclouds now allows users
to manually set arbitrary values for desired CPU and RAM of compute instances.
@@ -190,12 +195,6 @@
<p>Google Summer of Code 2014 has concluded and both Apache jclouds students
have successfully completed their projects, Amazon Glacier and Google Cloud
Storage support.
</p>
-<h3><a class="text-primary" href="/blog/2014/09/04/better-builders">Better
Builders with jclouds!</a></h3>
-<span class="text-muted">04 September 2014, by Zack Shoylev</span>
-<p>If you are a new jclouds developer, or even if you are already developing
jclouds support for any of the OpenStack or Rackspace APIs, you have likely
seen the domain classes that are used throughout the the jclouds codebase.
-These classes are used to represent OpenStack resources, particularly the JSON
structures supported by OpenStack APIs.
-</p>
-
<ul class="pagination text-center">
Modified: jclouds/site-content/blog/page2/index.html
URL:
http://svn.apache.org/viewvc/jclouds/site-content/blog/page2/index.html?rev=1821227&r1=1821226&r2=1821227&view=diff
==============================================================================
--- jclouds/site-content/blog/page2/index.html (original)
+++ jclouds/site-content/blog/page2/index.html Tue Jan 16 10:45:34 2018
@@ -165,6 +165,12 @@
<p><a
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute+Documentation">Write
a guest post!</a></p>
+<h3><a class="text-primary" href="/blog/2014/09/04/better-builders">Better
Builders with jclouds!</a></h3>
+<span class="text-muted">04 September 2014, by Zack Shoylev</span>
+<p>If you are a new jclouds developer, or even if you are already developing
jclouds support for any of the OpenStack or Rackspace APIs, you have likely
seen the domain classes that are used throughout the the jclouds codebase.
+These classes are used to represent OpenStack resources, particularly the JSON
structures supported by OpenStack APIs.
+</p>
+
<h3><a class="text-primary" href="/blog/2014/08/05/1-release-2-committers">1
release, 2 committers...a busy week for jclouds!</a></h3>
<span class="text-muted">05 August 2014, by <a
href="http://blog.xebialabs.com/author/aphillips/">Andrew Phillips</a></span>
<p>There's a lot going on this week for the jclouds community. Most
importantly, we're really pleased to introduce two new committers: Andrea Turli
and Chris Custine.
@@ -185,11 +191,6 @@
<p>The Google Summer of Code (GSoC) accepted projects have been announced and
we will have 3 students working on jclouds related projects!
</p>
-<h3><a class="text-primary" href="/blog/2014/03/04/jclouds-meetup">jclouds
Meetup</a></h3>
-<span class="text-muted">04 March 2014, by <a
href="https://twitter.com/everett_toews">Everett Toews</a></span>
-<p>Last night we held a jclouds meetup at Cloudera offices in San Francisco.
It was a well attended meetup and there were a number of new faces along with
our more regular group of attendees. We recorded the whole thing with Google
Hangouts on Air and you can get to know everyone in the first 5 minutes!
-</p>
-
<ul class="pagination text-center">
Modified: jclouds/site-content/blog/page3/index.html
URL:
http://svn.apache.org/viewvc/jclouds/site-content/blog/page3/index.html?rev=1821227&r1=1821226&r2=1821227&view=diff
==============================================================================
--- jclouds/site-content/blog/page3/index.html (original)
+++ jclouds/site-content/blog/page3/index.html Tue Jan 16 10:45:34 2018
@@ -165,6 +165,11 @@
<p><a
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute+Documentation">Write
a guest post!</a></p>
+<h3><a class="text-primary" href="/blog/2014/03/04/jclouds-meetup">jclouds
Meetup</a></h3>
+<span class="text-muted">04 March 2014, by <a
href="https://twitter.com/everett_toews">Everett Toews</a></span>
+<p>Last night we held a jclouds meetup at Cloudera offices in San Francisco.
It was a well attended meetup and there were a number of new faces along with
our more regular group of attendees. We recorded the whole thing with Google
Hangouts on Air and you can get to know everyone in the first 5 minutes!
+</p>
+
<h3><a class="text-primary"
href="/blog/2014/03/03/joining-the-asf-new-site-and-jclouds-1-7">Joining the
ASF, new site, and jclouds 1.7!</a></h3>
<span class="text-muted">03 March 2014, by Ignasi Barrera</span>
<p>It's been a while since our last blog post, and lots has happened since
then. There have been many things that have kept us busy, and finally, all the
hard work is starting to show up. During this time, we've:
@@ -185,11 +190,6 @@
<p>jclouds community is an international group with over 100 contributors
since we started in early 2009. The idea of holidays vary, but we decided
Mistletoe as an appropriate codename for jclouds 1.5.4. Here's why.
</p>
-<h3><a class="text-primary"
href="/blog/2012/11/17/jclouds-1-5-3-out-the-door">jclouds 1.5.3 out the
door</a></h3>
-<span class="text-muted">17 November 2012, by Adrian Cole</span>
-<p>Released on 2012-11-14, jclouds 1.5.3 includes minor fixes, and a few
important updates.
-</p>
-
<ul class="pagination text-center">
Modified: jclouds/site-content/blog/page4/index.html
URL:
http://svn.apache.org/viewvc/jclouds/site-content/blog/page4/index.html?rev=1821227&r1=1821226&r2=1821227&view=diff
==============================================================================
--- jclouds/site-content/blog/page4/index.html (original)
+++ jclouds/site-content/blog/page4/index.html Tue Jan 16 10:45:34 2018
@@ -165,6 +165,11 @@
<p><a
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute+Documentation">Write
a guest post!</a></p>
+<h3><a class="text-primary"
href="/blog/2012/11/17/jclouds-1-5-3-out-the-door">jclouds 1.5.3 out the
door</a></h3>
+<span class="text-muted">17 November 2012, by Adrian Cole</span>
+<p>Released on 2012-11-14, jclouds 1.5.3 includes minor fixes, and a few
important updates.
+</p>
+
<h3><a class="text-primary"
href="/blog/2012/11/09/500-jclouds-builds-on-buildhive-and-counting">500
jclouds builds on BuildHive and counting...</a></h3>
<span class="text-muted">09 November 2012, by Adrian Cole</span>
<p>At jclouds, we've been running our Jenkins continuous integration jobs in
CloudBees' DEV@cloud for a while now (CloudBees has a FOSS programme). We also
have an active and ever-increasing contributor community, which amongst others
means... lots of pull requests.
@@ -185,11 +190,6 @@
<p>We are very near beta, I promise! In the mean time, we just cut a new
codebase with a bunch of cool new toys. Here's a few. Thanks to Adam Lowe, we
are getting even deeper into OpenStack with more Keystone support than ever.
Setup your code to pull org.jclouds.labs/openstack-keystone, and you can do
stuff like this.
</p>
-<h3><a class="text-primary"
href="/blog/2012/03/23/take-a-peek-at-vcloud-director-1-5-openstack-and">Take a
peek at vCloud Director 1.5, OpenStack, and VirtualBox</a></h3>
-<span class="text-muted">23 March 2012, by Adrian Cole</span>
-<p>The jclouds team have been working very hard lately, particularly on a few
new apis. We've decided to cage them no longer and cut jclouds 1.5.0-alpha.1.
Most notably, we've added the openstack-nova api, and three new providers, all
of which discovered via OpenStack Keystone v2.0.
-</p>
-
<ul class="pagination text-center">
Modified: jclouds/site-content/blog/page5/index.html
URL:
http://svn.apache.org/viewvc/jclouds/site-content/blog/page5/index.html?rev=1821227&r1=1821226&r2=1821227&view=diff
==============================================================================
--- jclouds/site-content/blog/page5/index.html (original)
+++ jclouds/site-content/blog/page5/index.html Tue Jan 16 10:45:34 2018
@@ -165,6 +165,11 @@
<p><a
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute+Documentation">Write
a guest post!</a></p>
+<h3><a class="text-primary"
href="/blog/2012/03/23/take-a-peek-at-vcloud-director-1-5-openstack-and">Take a
peek at vCloud Director 1.5, OpenStack, and VirtualBox</a></h3>
+<span class="text-muted">23 March 2012, by Adrian Cole</span>
+<p>The jclouds team have been working very hard lately, particularly on a few
new apis. We've decided to cage them no longer and cut jclouds 1.5.0-alpha.1.
Most notably, we've added the openstack-nova api, and three new providers, all
of which discovered via OpenStack Keystone v2.0.
+</p>
+
<h3><a class="text-primary"
href="/blog/2012/03/09/ec2-gets-rid-of-that-if-instancetype-is32bit">EC2 gets
rid of that "if instancetype.is32bit" statement</a></h3>
<span class="text-muted">09 March 2012, by Adrian Cole</span>
<p>2 weeks ago, I started a bit of a rant on EC2's 32bit-only vms.
@@ -185,11 +190,6 @@
<p>The 1.2 release of jclouds includes results of almost 2 months effort by
our community. A total of 55 Issues were addressed between jclouds 1.1 and 1.2,
stabilizing the cloud so you don't have to!
</p>
-<h3><a class="text-primary"
href="/blog/2009/05/13/catching-exceptions-with-less-keystrokes">Catching
exceptions with fewer keystrokes</a></h3>
-<span class="text-muted">13 May 2009, by Adrian Cole</span>
-<p>Some of us hate checked exceptions, but still use them for one reason or
another. A common problem we have is unnecessary exception nesting, or runtime
swallowing. This often leads to the all to familiar and crufty code with a
million catch blocks. jclouds has a slightly different approach that strikes a
balance, allowing checked exceptions to be dealt with, but without the pain of
so many lines of repetitious code.
-</p>
-
<ul class="pagination text-center">
Modified: jclouds/site-content/blog/page6/index.html
URL:
http://svn.apache.org/viewvc/jclouds/site-content/blog/page6/index.html?rev=1821227&r1=1821226&r2=1821227&view=diff
==============================================================================
--- jclouds/site-content/blog/page6/index.html (original)
+++ jclouds/site-content/blog/page6/index.html Tue Jan 16 10:45:34 2018
@@ -165,6 +165,11 @@
<p><a
href="https://cwiki.apache.org/confluence/display/JCLOUDS/How+to+Contribute+Documentation">Write
a guest post!</a></p>
+<h3><a class="text-primary"
href="/blog/2009/05/13/catching-exceptions-with-less-keystrokes">Catching
exceptions with fewer keystrokes</a></h3>
+<span class="text-muted">13 May 2009, by Adrian Cole</span>
+<p>Some of us hate checked exceptions, but still use them for one reason or
another. A common problem we have is unnecessary exception nesting, or runtime
swallowing. This often leads to the all to familiar and crufty code with a
million catch blocks. jclouds has a slightly different approach that strikes a
balance, allowing checked exceptions to be dealt with, but without the pain of
so many lines of repetitious code.
+</p>
+
<h3><a class="text-primary"
href="/blog/2009/05/11/jclouds-s3-beta-released">jclouds-s3 beta
released</a></h3>
<span class="text-muted">11 May 2009, by Adrian Cole</span>
<p>jclouds provides any-weight clouds tools for Java 5 and later: you choose
the depth you want. We are pleased to announce our first beta of jclouds-s3.
jclouds-s3 provides both Map<String,InputStream> and FutureCommand
interfaces to Amazon S3.
Modified: jclouds/site-content/index.html
URL:
http://svn.apache.org/viewvc/jclouds/site-content/index.html?rev=1821227&r1=1821226&r2=1821227&view=diff
==============================================================================
--- jclouds/site-content/index.html (original)
+++ jclouds/site-content/index.html Tue Jan 16 10:45:34 2018
@@ -202,6 +202,10 @@
</div>
</div>
+ <div id="keystonev3" class="alert alert-success">
+ <p>If you are an OpenStack user, read our <a
href="/blog/2018/01/16/keystone-v3/">last blog post</a> about the
<strong>OpenStack Keystone V3</strong> integration that will be released in
jclouds <strong>2.1.0</strong>!</p>
+ </div>
+
<div id="releasenews" class="alert alert-info">
<p>The <a href="/start/install/">latest version</a> is 2.0.3
released on 2017-11-30! Read the <a href="/releasenotes/2.0.3/">release
notes</a>.</p>
</div>