package net.juniper.contrail.sandesh;
import java.util.Map;
import java.util.Properties;
import java.util.concurrent.ConcurrentHashMap;
import net.juniper.contrail.watchdog.TaskWatchDogHttpHandler;
public class VCenterHttpServices {
private VCenterHttpServices() { }
// Maps service names to services
private static final Map<String, HttpProvider> providers =
new ConcurrentHashMap<String, HttpProvider>();
public static final String DEFAULT_PROVIDER_NAME = "VCenterHttpProvider";
// Provider registration API
public static void registerDefaultProvider(HttpProvider p) {
registerProvider(DEFAULT_PROVIDER_NAME, p);
}
public static void registerProvider(String name, HttpProvider p){
providers.put(name, p);
}
// Service access API
public static HttpService newInstance() {
return newInstance(DEFAULT_PROVIDER_NAME);
}
public static HttpService newInstance(String name) {
HttpProvider p = providers.get(name);
if (p == null)
throw new IllegalArgumentException(
"No provider registered with name: " + name);
return p.newService();
}
public static void registerHttpHandlers() {
new VCenterPluginReqHttpHandler();
new VRouterListReqHttpHandler();
new VRouterDetailReqHttpHandler();
new TaskWatchDogHttpHandler();
new VNetworkListReqHttpHandler();
}
public static void init(Properties configProps) {
registerDefaultProvider(new VCenterHttpProvider(configProps));
registerHttpHandlers();
}
}