blob: 2ed87cbc8fbd6fca4a55440e2ad9eb389e308d3e [file] [log] [blame]
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -08001package net.floodlightcontroller.core.web;
2
3import org.restlet.data.Status;
4import org.restlet.resource.ServerResource;
5
6import net.floodlightcontroller.core.IFloodlightProviderService;
7import net.floodlightcontroller.core.IFloodlightProviderService.Role;
8import net.floodlightcontroller.core.annotations.LogMessageDoc;
9
10import org.restlet.resource.Get;
11import org.restlet.resource.Post;
12import org.slf4j.Logger;
13import org.slf4j.LoggerFactory;
14
15public class ControllerRoleResource extends ServerResource {
16
Yuta HIGUCHI6ac8d182013-10-22 15:24:56 -070017 protected final static Logger log = LoggerFactory.getLogger(ControllerRoleResource.class);
Umesh Krishnaswamy345ee992012-12-13 20:29:48 -080018
19 @Get("json")
20 public RoleInfo getRole() {
21 IFloodlightProviderService floodlightProvider =
22 (IFloodlightProviderService)getContext().getAttributes().
23 get(IFloodlightProviderService.class.getCanonicalName());
24 return new RoleInfo(floodlightProvider.getRole());
25 }
26
27 @Post("json")
28 @LogMessageDoc(level="WARN",
29 message="Invalid role value specified in REST API to " +
30 "set controller role",
31 explanation="An HA role change request was malformed.",
32 recommendation=LogMessageDoc.CHECK_CONTROLLER)
33 public void setRole(RoleInfo roleInfo) {
34 //Role role = Role.lookupRole(roleInfo.getRole());
35 Role role = null;
36 try {
37 role = Role.valueOf(roleInfo.getRole().toUpperCase());
38 }
39 catch (IllegalArgumentException e) {
40 // The role value in the REST call didn't match a valid
41 // role name, so just leave the role as null and handle
42 // the error below.
43 }
44 if (role == null) {
45 log.warn ("Invalid role value specified in REST API to " +
46 "set controller role");
47 setStatus(Status.CLIENT_ERROR_BAD_REQUEST, "Invalid role value");
48 return;
49 }
50
51 IFloodlightProviderService floodlightProvider =
52 (IFloodlightProviderService)getContext().getAttributes().
53 get(IFloodlightProviderService.class.getCanonicalName());
54
55 floodlightProvider.setRole(role);
56 }
57}