Skip to content
Snippets Groups Projects
Commit 1df4b3ab authored by Diogo's avatar Diogo
Browse files

Clean-up branch

parent c6267b05
No related branches found
No related tags found
No related merge requests found
package net.floodlightcontroller.loadbalancer;
import java.io.IOException;
import java.util.Collection;
import org.restlet.resource.Delete;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.restlet.resource.Put;
import org.restlet.resource.ServerResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.MappingJsonFactory;
public class L7PoliciesResource extends ServerResource {
protected static Logger log = LoggerFactory.getLogger(L7PoliciesResource.class);
@Get("json")
public Collection <L7Policy> retrieve() {
ILoadBalancerService lbs =
(ILoadBalancerService)getContext().getAttributes().
get(ILoadBalancerService.class.getCanonicalName());
String policyId = (String) getRequestAttributes().get("policy");
if (policyId!=null)
return lbs.listL7Policy(policyId);
else
return lbs.listL7Policies();
}
@Put
@Post
public L7Policy createL7Policy(String postData) {
L7Policy l7_policy=null;
try {
l7_policy=jsonToL7Policy(postData);
} catch (IOException e) {
log.error("Could not parse JSON {}", e.getMessage());
}
ILoadBalancerService lbs =
(ILoadBalancerService)getContext().getAttributes().
get(ILoadBalancerService.class.getCanonicalName());
String policyId = (String) getRequestAttributes().get("policy");
if (policyId != null)
return lbs.updateL7Policy(l7_policy);
else
return lbs.createL7Policy(l7_policy);
}
@Delete
public int removeL7Policy() {
String policyId = (String) getRequestAttributes().get("policy");
ILoadBalancerService lbs =
(ILoadBalancerService)getContext().getAttributes().
get(ILoadBalancerService.class.getCanonicalName());
return lbs.removeL7Policy(policyId);
}
protected L7Policy jsonToL7Policy(String json) throws IOException {
if (json==null) return null;
MappingJsonFactory f = new MappingJsonFactory();
JsonParser jp;
L7Policy l7_policy = new L7Policy();
try {
jp = f.createParser(json);
} catch (JsonParseException e) {
throw new IOException(e);
}
jp.nextToken();
if (jp.getCurrentToken() != JsonToken.START_OBJECT) {
throw new IOException("Expected START_OBJECT");
}
while (jp.nextToken() != JsonToken.END_OBJECT) {
if (jp.getCurrentToken() != JsonToken.FIELD_NAME) {
throw new IOException("Expected FIELD_NAME");
}
String n = jp.getCurrentName();
jp.nextToken();
if (jp.getText().equals(""))
continue;
if (n.equals("id")) {
l7_policy.id = jp.getText();
continue;
}
if (n.equals("vip_id")) {
l7_policy.vipId = jp.getText();
continue;
}
if (n.equals("pool_id")) {
l7_policy.poolId = jp.getText();
continue;
}
if (n.equals("value")) {
l7_policy.action = Short.parseShort(jp.getText());
continue;
}
log.warn("Unrecognized field {} in " +
"parsing L7Policies",
jp.getText());
}
jp.close();
return l7_policy;
}
}
package net.floodlightcontroller.loadbalancer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@JsonSerialize(using=L7PolicySerializer.class)
public class L7Policy {
protected String id;
protected String vipId;
protected String poolId;
protected short action;
public L7Policy() {
id = String.valueOf((int) (Math.random()*10000));
poolId = null;
vipId = null;
action = 0;
}
}
package net.floodlightcontroller.loadbalancer;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class L7PolicySerializer extends JsonSerializer<L7Policy> {
@Override
public void serialize(L7Policy l7_policy, JsonGenerator jGen, SerializerProvider serializer)
throws IOException, JsonProcessingException {
jGen.writeStartObject();
jGen.writeStringField("action", String.valueOf(l7_policy.action));
jGen.writeStringField("id", l7_policy.id);
jGen.writeStringField("vipId", l7_policy.vipId);
jGen.writeStringField("poolId", l7_policy.poolId);
jGen.writeEndObject();
}
}
package net.floodlightcontroller.loadbalancer;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
@JsonSerialize(using=L7RuleSerializer.class)
public class L7Rule {
protected String id;
protected String policyId;
protected short type;
protected String value;
public L7Rule() {
id = String.valueOf((int) (Math.random()*10000));
policyId = null;
value = null;
type = 0;
}
}
package net.floodlightcontroller.loadbalancer;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
public class L7RuleSerializer extends JsonSerializer<L7Rule>{
@Override
public void serialize(L7Rule l7_rule, JsonGenerator jGen, SerializerProvider serializer)
throws IOException, JsonProcessingException {
jGen.writeStartObject();
jGen.writeStringField("type", String.valueOf(l7_rule.type));
jGen.writeStringField("value", l7_rule.value);
jGen.writeStringField("id", l7_rule.id);
jGen.writeStringField("policyId", l7_rule.policyId);
jGen.writeEndObject();
}
}
package net.floodlightcontroller.loadbalancer;
import java.io.IOException;
import java.util.Collection;
import org.restlet.resource.Delete;
import org.restlet.resource.Get;
import org.restlet.resource.Post;
import org.restlet.resource.Put;
import org.restlet.resource.ServerResource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.fasterxml.jackson.databind.MappingJsonFactory;
public class L7RulesResource extends ServerResource {
protected static Logger log = LoggerFactory.getLogger(L7RulesResource.class);
@Get("json")
public Collection <L7Rule> retrieve() {
ILoadBalancerService lbs =
(ILoadBalancerService)getContext().getAttributes().
get(ILoadBalancerService.class.getCanonicalName());
String ruleId = (String) getRequestAttributes().get("rule");
if (ruleId!=null)
return lbs.listL7Rule(ruleId);
else
return lbs.listL7Rules();
}
@Put
@Post
public L7Rule createL7Rule(String postData) {
L7Rule l7_rule=null;
try {
l7_rule=jsonToL7Rule(postData);
} catch (IOException e) {
log.error("Could not parse JSON {}", e.getMessage());
}
ILoadBalancerService lbs =
(ILoadBalancerService)getContext().getAttributes().
get(ILoadBalancerService.class.getCanonicalName());
String ruleId = (String) getRequestAttributes().get("rule");
if (ruleId != null)
return lbs.updateL7Rule(l7_rule);
else
return lbs.createL7Rule(l7_rule);
}
@Delete
public int removeL7Rule() {
String ruleId = (String) getRequestAttributes().get("rule");
ILoadBalancerService lbs =
(ILoadBalancerService)getContext().getAttributes().
get(ILoadBalancerService.class.getCanonicalName());
return lbs.removeL7Rule(ruleId);
}
protected L7Rule jsonToL7Rule(String json) throws IOException {
if (json==null) return null;
MappingJsonFactory f = new MappingJsonFactory();
JsonParser jp;
L7Rule l7_rule = new L7Rule();
try {
jp = f.createParser(json);
} catch (JsonParseException e) {
throw new IOException(e);
}
jp.nextToken();
if (jp.getCurrentToken() != JsonToken.START_OBJECT) {
throw new IOException("Expected START_OBJECT");
}
while (jp.nextToken() != JsonToken.END_OBJECT) {
if (jp.getCurrentToken() != JsonToken.FIELD_NAME) {
throw new IOException("Expected FIELD_NAME");
}
String n = jp.getCurrentName();
jp.nextToken();
if (jp.getText().equals(""))
continue;
if (n.equals("id")) {
l7_rule.id = jp.getText();
continue;
}
if (n.equals("policy_id")) {
l7_rule.policyId = jp.getText();
continue;
}
if (n.equals("type")) {
l7_rule.type = Short.parseShort(jp.getText());
continue;
}
if (n.equals("value")) {
l7_rule.value = jp.getText();
continue;
}
log.warn("Unrecognized field {} in " +
"parsing l7Rules",
jp.getText());
}
jp.close();
return l7_rule;
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment