PluggableService: Refactor method to return map of key value pairs

- Makes plugins self contained so they decide their properties file format
- PluggableService creates the contract that implementing entity will return a
  properties map which is apiname:rolemask (both are strings)

Signed-off-by: Rohit Yadav <bhaisaab@apache.org>
This commit is contained in:
Rohit Yadav 2013-01-10 15:43:44 -08:00
parent a56f355ceb
commit c4e890c55d
10 changed files with 46 additions and 26 deletions

View File

@ -17,16 +17,16 @@
package com.cloud.server; package com.cloud.server;
import com.cloud.utils.PropertiesUtil;
import java.util.Map;
public class ManagementServerSimulatorImpl extends ManagementServerExtImpl { public class ManagementServerSimulatorImpl extends ManagementServerExtImpl {
@Override @Override
public String[] getPropertiesFiles() { public Map<String, String> getProperties() {
String[] apis = super.getPropertiesFiles(); Map<String, String> apiNameRoleMaskMapping = super.getProperties();
String[] newapis = new String[apis.length + 1]; apiNameRoleMaskMapping.putAll(PropertiesUtil.processConfigFile(new String[]
for (int i = 0; i < apis.length; i++) { {"commands-simulator.properties"}));
newapis[i] = apis[i]; return apiNameRoleMaskMapping;
}
newapis[apis.length] = "commands-simulator.properties";
return newapis;
} }
} }

View File

@ -17,6 +17,7 @@
package com.cloud.network.element; package com.cloud.network.element;
import java.lang.String;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.ArrayList; import java.util.ArrayList;
@ -24,6 +25,7 @@ import java.util.Set;
import javax.ejb.Local; import javax.ejb.Local;
import com.cloud.utils.PropertiesUtil;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.api.commands.DeleteCiscoNexusVSMCmd; import com.cloud.api.commands.DeleteCiscoNexusVSMCmd;
@ -237,7 +239,8 @@ public class CiscoNexusVSMElement extends CiscoNexusVSMDeviceManagerImpl impleme
} }
@Override @Override
public String[] getPropertiesFiles() { public Map<String, String> getProperties() {
return new String[] { "cisconexusvsm_commands.properties" }; return PropertiesUtil.processConfigFile(new String[]
{ "cisconexusvsm_commands.properties" });
} }
} }

View File

@ -16,6 +16,7 @@
// under the License. // under the License.
package com.cloud.network.element; package com.cloud.network.element;
import java.lang.String;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -24,6 +25,7 @@ import java.util.Set;
import javax.ejb.Local; import javax.ejb.Local;
import com.cloud.utils.PropertiesUtil;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.api.ApiDBUtils; import com.cloud.api.ApiDBUtils;
@ -260,8 +262,9 @@ public class F5ExternalLoadBalancerElement extends ExternalLoadBalancerDeviceMan
} }
@Override @Override
public String[] getPropertiesFiles() { public Map<String, String> getProperties() {
return new String[] { "f5bigip_commands.properties" }; return PropertiesUtil.processConfigFile(new String[]
{ "f5bigip_commands.properties" });
} }
@Override @Override

View File

@ -16,6 +16,7 @@
// under the License. // under the License.
package com.cloud.network.element; package com.cloud.network.element;
import java.lang.String;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
@ -24,6 +25,7 @@ import java.util.Set;
import javax.ejb.Local; import javax.ejb.Local;
import com.cloud.utils.PropertiesUtil;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.api.ApiDBUtils; import com.cloud.api.ApiDBUtils;
@ -402,8 +404,9 @@ public class JuniperSRXExternalFirewallElement extends ExternalFirewallDeviceMan
} }
@Override @Override
public String[] getPropertiesFiles() { public Map<String, String> getProperties() {
return new String[] { "junipersrx_commands.properties"}; return PropertiesUtil.processConfigFile(new String[]
{ "junipersrx_commands.properties"});
} }
@Override @Override

View File

@ -26,6 +26,7 @@ import java.util.Set;
import javax.ejb.Local; import javax.ejb.Local;
import com.cloud.utils.PropertiesUtil;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager;
@ -464,8 +465,9 @@ StaticNatServiceProvider {
} }
@Override @Override
public String[] getPropertiesFiles() { public Map<String, String> getProperties() {
return new String[] { "netscalerloadbalancer_commands.properties" }; return PropertiesUtil.processConfigFile(new String[]
{ "netscalerloadbalancer_commands.properties" });
} }
@Override @Override

View File

@ -27,6 +27,7 @@ import java.util.UUID;
import javax.ejb.Local; import javax.ejb.Local;
import javax.naming.ConfigurationException; import javax.naming.ConfigurationException;
import com.cloud.utils.PropertiesUtil;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
import com.cloud.agent.AgentManager; import com.cloud.agent.AgentManager;
@ -540,8 +541,9 @@ public class NiciraNvpElement extends AdapterBase implements
} }
@Override @Override
public String[] getPropertiesFiles() { public Map<String, String> getProperties() {
return new String[] { "nicira-nvp_commands.properties" }; return PropertiesUtil.processConfigFile(new String[]
{ "nicira-nvp_commands.properties" });
} }
@Override @Override

View File

@ -24,6 +24,7 @@ import java.util.Set;
import javax.ejb.Local; import javax.ejb.Local;
import com.cloud.utils.PropertiesUtil;
import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd; import org.apache.cloudstack.api.command.admin.router.ConfigureVirtualRouterElementCmd;
import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd; import org.apache.cloudstack.api.command.admin.router.ListVirtualRouterElementsCmd;
import org.apache.log4j.Logger; import org.apache.log4j.Logger;
@ -680,8 +681,9 @@ public class VirtualRouterElement extends AdapterBase implements VirtualRouterEl
} }
@Override @Override
public String[] getPropertiesFiles() { public Map<String, String> getProperties() {
return new String[] { "virtualrouter_commands.properties" }; return PropertiesUtil.processConfigFile(new String[]
{ "virtualrouter_commands.properties" });
} }
@Override @Override

View File

@ -29,6 +29,7 @@ import com.cloud.domain.dao.DomainDao;
import com.cloud.exception.InvalidParameterValueException; import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.PermissionDeniedException; import com.cloud.exception.PermissionDeniedException;
import com.cloud.projects.Project; import com.cloud.projects.Project;
import com.cloud.utils.PropertiesUtil;
import org.apache.cloudstack.api.response.UsageTypeResponse; import org.apache.cloudstack.api.response.UsageTypeResponse;
import com.cloud.usage.UsageJobVO; import com.cloud.usage.UsageJobVO;
import com.cloud.usage.UsageTypes; import com.cloud.usage.UsageTypes;
@ -206,8 +207,9 @@ public class ManagementServerExtImpl extends ManagementServerImpl implements Man
} }
@Override @Override
public String[] getPropertiesFiles() { public Map<String, String> getProperties() {
return new String[] { "commands.properties", "commands-ext.properties" }; return PropertiesUtil.processConfigFile(new String[]
{ "commands.properties", "commands-ext.properties" });
} }
private Date computeAdjustedTime(Date initialDate, TimeZone targetTZ, boolean adjustToDayStart) { private Date computeAdjustedTime(Date initialDate, TimeZone targetTZ, boolean adjustToDayStart) {

View File

@ -2297,8 +2297,9 @@ public class ManagementServerImpl implements ManagementServer {
} }
@Override @Override
public String[] getPropertiesFiles() { public Map<String, String> getProperties() {
return new String[] { "commands.properties" }; return PropertiesUtil.processConfigFile(new String[]
{ "commands.properties" });
} }
protected class EventPurgeTask implements Runnable { protected class EventPurgeTask implements Runnable {

View File

@ -16,9 +16,11 @@
// under the License. // under the License.
package com.cloud.utils.component; package com.cloud.utils.component;
import java.util.Map;
// This interface defines methods for pluggable code within the Cloud Stack. // This interface defines methods for pluggable code within the Cloud Stack.
public interface PluggableService { public interface PluggableService {
// The config command properties filenames that lists allowed API commands // The config command properties filenames that lists allowed API commands
// and role masks supported by this pluggable service // and role masks supported by this pluggable service
String[] getPropertiesFiles(); Map<String, String> getProperties();
} }