Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions README.textile
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,10 @@ You can continue using the latest source from v1.x essex branch
h2. Maven

|groupId|artifactId|version|
|org.openstack|keystone-client|3.0.0-SNAPSHOT|
|org.openstack|nova-client|3.0.0-SNAPSHOT|
|org.openstack|glance-client|3.0.0-SNAPSHOT|
|org.openstack|swift-client|3.0.0-SNAPSHOT|
|com.woorea|keystone-client|3.0.0-SNAPSHOT|
|com.woorea|nova-client|3.0.0-SNAPSHOT|
|com.woorea|glance-client|3.0.0-SNAPSHOT|
|com.woorea|swift-client|3.0.0-SNAPSHOT|

h3. Maven Repositories

Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
package com.woorea.openstack.glance;

import org.openstack.glance.api.ImagesResource;
import org.openstack.glance.api.SharedImagesResource;

import com.woorea.openstack.base.client.OpenStackClient;
import com.woorea.openstack.base.client.OpenStackClientConnector;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.glance.api;
package com.woorea.openstack.glance;

import java.util.Calendar;
import java.util.Collection;
Expand Down Expand Up @@ -113,15 +113,11 @@ public class Show extends OpenStackRequest<Image> {
public Show(String id) {
super(CLIENT, HttpMethod.HEAD, new StringBuilder("/images/").append(id).toString(), null, Image.class);
}

/* (non-Javadoc)
* @see org.openstack.base.client.OpenStackRequest#execute()
*/

@Override
public Image execute() {
//custom parsing here
OpenStackResponse response = CLIENT.execute(this, OpenStackResponse.class);
return parse(response.headers());
// custom parsing here
return parse(CLIENT.request(this).headers());
}

}
Expand Down Expand Up @@ -156,20 +152,15 @@ public Download(String id) {
header("Accept", "application/octet-stream");
}

/* (non-Javadoc)
* @see org.openstack.base.client.OpenStackRequest#execute()
*/
@Override
public ImageDownload execute() {
//custom parsing here
OpenStackResponse response = CLIENT.execute(this, OpenStackResponse.class);
// custom parsing here
OpenStackResponse response = CLIENT.request(this);
ImageDownload imageDownload = new ImageDownload();
imageDownload.setImage(parse(response.headers()));
imageDownload.setInputStream(response.getInputStream());
return imageDownload;
}



}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.glance.api;
package com.woorea.openstack.glance;


import com.woorea.openstack.base.client.HttpMethod;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package com.woorea.openstack.keystone;

import org.openstack.keystone.api.EndpointsResource;
import org.openstack.keystone.api.RolesResource;
import org.openstack.keystone.api.ServicesResource;
import org.openstack.keystone.api.TenantsResource;
import org.openstack.keystone.api.TokensResource;
import org.openstack.keystone.api.UsersResource;
import com.woorea.openstack.keystone.api.EndpointsResource;
import com.woorea.openstack.keystone.api.RolesResource;
import com.woorea.openstack.keystone.api.ServicesResource;
import com.woorea.openstack.keystone.api.TenantsResource;
import com.woorea.openstack.keystone.api.TokensResource;
import com.woorea.openstack.keystone.api.UsersResource;

import com.woorea.openstack.base.client.OpenStackClient;
import com.woorea.openstack.base.client.OpenStackClientConnector;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.keystone.api;
package com.woorea.openstack.keystone.api;


import com.woorea.openstack.base.client.HttpMethod;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.keystone.api;
package com.woorea.openstack.keystone.api;


import com.woorea.openstack.base.client.Entity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.keystone.api;
package com.woorea.openstack.keystone.api;


import com.woorea.openstack.base.client.Entity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.keystone.api;
package com.woorea.openstack.keystone.api;


import com.woorea.openstack.base.client.Entity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.keystone.api;
package com.woorea.openstack.keystone.api;


import com.woorea.openstack.base.client.Entity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.keystone.api;
package com.woorea.openstack.keystone.api;


import com.woorea.openstack.base.client.Entity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.keystone.api;
package com.woorea.openstack.keystone.api;


import com.woorea.openstack.base.client.Entity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package org.openstack.keystone.utils;
package com.woorea.openstack.keystone.utils;

import java.net.PasswordAuthentication;
import java.util.concurrent.ConcurrentHashMap;

import org.openstack.keystone.api.Authenticate;

import com.woorea.openstack.base.client.OpenStackTokenProvider;
import com.woorea.openstack.keystone.Keystone;
import com.woorea.openstack.keystone.model.Access;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package org.openstack.keystone.utils;
package com.woorea.openstack.keystone.utils;

import java.util.List;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,24 @@

import com.woorea.openstack.base.client.OpenStackClientConnector;
import com.woorea.openstack.base.client.OpenStackRequest;
import com.woorea.openstack.base.client.OpenStackResponse;
import com.woorea.openstack.base.client.OpenStackResponseException;

public class JaxRs20Connector implements OpenStackClientConnector {

protected Client client = OpenStack.CLIENT;

@Override
public <T> T execute(OpenStackRequest<T> request) {
public <T> OpenStackResponse request(OpenStackRequest<T> request) {
WebTarget target = client.target(request.endpoint()).path(request.path());

for(Map.Entry<String, Object> entry : request.queryParams().entrySet()) {
target = target.queryParam(entry.getKey(), entry.getValue());
}
target.register(new LoggingFilter(Logger.getLogger("os"),10000));

target.register(new LoggingFilter(Logger.getLogger("os"), 10000));
Invocation.Builder invocation = target.request();

for(Map.Entry<String, List<Object>> h : request.headers().entrySet()) {
StringBuilder sb = new StringBuilder();
for(Object v : h.getValue()) {
Expand All @@ -36,30 +40,19 @@ public <T> T execute(OpenStackRequest<T> request) {
invocation.header(h.getKey(), sb);
}

Entity<?> entity = (request.entity() == null) ? null : Entity
.entity(request.entity().getEntity(), request.entity()
.getContentType());
Entity<?> entity = (request.entity() == null) ? null :
Entity.entity(request.entity().getEntity(), request.entity().getContentType());

try {
if (entity != null) {
if (request.returnType() == null || request.returnType() == Void.class) {
invocation.method(request.method().name(), entity);
} else {
return invocation.method(request.method().name(), entity, request.returnType());
}
return new JaxRs20Response(invocation.method(request.method().name(), entity));
} else {
if (request.returnType() == null || request.returnType() == Void.class) {
invocation.method(request.method().name());
} else {
return invocation.method(request.method().name(), request.returnType());
}
return new JaxRs20Response(invocation.method(request.method().name()));
}
} catch (ClientErrorException e) {
throw new OpenStackResponseException(e.getResponse()
.getStatusInfo().toString(), e.getResponse().getStatus());
}

return null;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,11 @@ public JaxRs20Response(Response response) {
this.response = response;
}

@Override
public <T> T getEntity(Class<T> returnType) {
return response.readEntity(returnType);
}

@Override
public InputStream getInputStream() {
return (InputStream) response.getEntity();
Expand Down
2 changes: 1 addition & 1 deletion openstack-client-connectors/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<profile>
<id>jersey</id>
<activation>
<activeByDefault>true</activeByDefault>
<activeByDefault>false</activeByDefault>
</activation>
<modules>
<module>jersey-connector</module>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

import com.woorea.openstack.base.client.OpenStackClientConnector;
import com.woorea.openstack.base.client.OpenStackRequest;
import com.woorea.openstack.base.client.OpenStackResponse;
import com.woorea.openstack.base.client.OpenStackResponseException;

public class RESTEasyConnector implements OpenStackClientConnector {
Expand Down Expand Up @@ -59,12 +60,13 @@ public ObjectMapper getContext(Class<?> type) {
CLIENT_FACTORY = new ClientRequestFactory(ClientRequest.getDefaultExecutor(), providerFactory);
}

@Override
public <T> T execute(OpenStackRequest<T> request) {
public <T> OpenStackResponse request(OpenStackRequest<T> request) {
ClientRequest client = CLIENT_FACTORY.createRequest(request.endpoint() + "/" + request.path());

for(Map.Entry<String, Object> entry : request.queryParams().entrySet()) {
client = client.queryParameter(entry.getKey(), String.valueOf(entry.getValue()));
}

for (Entry<String, List<Object>> h : request.headers().entrySet()) {
StringBuilder sb = new StringBuilder();
for (Object v : h.getValue()) {
Expand All @@ -86,9 +88,9 @@ public <T> T execute(OpenStackRequest<T> request) {
}

if (response.getStatus() == HttpStatus.SC_OK
|| response.getStatus() == HttpStatus.SC_CREATED
|| response.getStatus() == HttpStatus.SC_NO_CONTENT) {
return response.getEntity(request.returnType());
|| response.getStatus() == HttpStatus.SC_CREATED
|| response.getStatus() == HttpStatus.SC_NO_CONTENT) {
return new RESTEasyResponse(response);
}

response.releaseConnection();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.woorea.openstack.connector;

import org.jboss.resteasy.client.ClientResponse;
import com.woorea.openstack.base.client.OpenStackResponse;

import javax.ws.rs.core.MultivaluedMap;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;

public class RESTEasyResponse implements OpenStackResponse {

private ClientResponse response;

public RESTEasyResponse(ClientResponse response) {
this.response = response;
}

@Override
public <T> T getEntity(Class<T> returnType) {
return (T) response.getEntity(returnType);
}

@Override
public InputStream getInputStream() {
return (InputStream) response.getEntity();
}

@Override
public String header(String name) {
@SuppressWarnings("unchecked")
MultivaluedMap<String, String> responseHeaders = response.getHeaders();
return responseHeaders.getFirst(name);
}

@Override
public Map<String, String> headers() {
Map<String, String> headers = new HashMap<String, String>();

@SuppressWarnings("unchecked")
MultivaluedMap<String, String> responseHeaders = response.getHeaders();
for (String key : responseHeaders.keySet()) {
headers.put(key, responseHeaders.getFirst(key));
}

return headers;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ public OpenStackClient(String endpoint, OpenStackClientConnector connector) {
this.endpoint = endpoint;
this.connector = (connector == null) ? DEFAULT_CONNECTOR : connector;
}
public <T> T execute(OpenStackRequest<T> request) {

public <T> OpenStackResponse request(OpenStackRequest<T> request) {
OpenStackResponseException authException = null;

for (int i = 0; i <= AUTHENTICATION_RETRIES; i++) {
Expand All @@ -48,7 +48,7 @@ public <T> T execute(OpenStackRequest<T> request) {
}

try {
return (T) connector.execute(request);
return connector.request(request);
} catch (OpenStackResponseException e) {
if (e.getStatus() != OpenStackResponseStatus.NOT_AUTHORIZED
|| tokenProvider == null) {
Expand All @@ -61,10 +61,10 @@ public <T> T execute(OpenStackRequest<T> request) {

throw authException;
}
//Allow to change the response type from the request
public <R, T> T execute(OpenStackRequest<R> request, Class<T> type) {
return null;

public <T> T execute(OpenStackRequest<T> request) {
OpenStackResponse response = request(request);
return request.returnType() != null ? response.getEntity(request.returnType()) : null;
}

public void property(String property, String value) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@

public interface OpenStackClientConnector {

public <T> T execute(OpenStackRequest<T> request);
public <T> OpenStackResponse request(OpenStackRequest<T> request);

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@

public interface OpenStackResponse {

public <T> T getEntity(Class<T> returnType);

public InputStream getInputStream();

public String header(String name);
Expand Down
2 changes: 1 addition & 1 deletion openstack-console/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
<artifactId>exec-maven-plugin</artifactId>
<version>1.2.1</version>
<configuration>
<mainClass>org.openstack.console.Main</mainClass>
<mainClass>com.woorea.openstack.console.Main</mainClass>
</configuration>
</plugin>
</plugins>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.woorea.openstack.console.keystone;

import org.apache.commons.cli.CommandLine;
import org.openstack.keystone.api.Authenticate;

import com.woorea.openstack.base.client.OpenStackSimpleTokenProvider;
import com.woorea.openstack.console.Command;
Expand Down
Loading