@requestid = request.payload[:requestid]
@payload = PluginManager["security_plugin"].encodereply(agent, payload, requestid, request.payload[:callerid])
when :request, :direct_request
- validate_compount_filter(@filter["compound"]) unless @filter["compound"].empty?
+ validate_compound_filter(@filter["compound"]) unless @filter["compound"].empty?
@requestid = create_reqid unless @requestid
@payload = PluginManager["security_plugin"].encoderequest(Config.instance.identity, payload, requestid, filter, agent, collective, ttl)
end
end
- def validate_compount_filter(compound_filter)
+ def validate_compound_filter(compound_filter)
compound_filter.each do |filter|
filter.each do |statement|
if statement["fstatement"]
pluginname = Data.pluginname(functionname)
value = statement["fstatement"]["value"]
- begin
- ddl = DDL.new(pluginname, :data)
- rescue
- raise DDLValidationError, "Could not find DDL for data plugin #{pluginname}, cannot use #{functionname}() in discovery"
- end
+ ddl = DDL.new(pluginname, :data)
# parses numbers and booleans entered as strings into proper
# types of data so that DDL validation will pass
Data.ddl_validate(ddl, statement["fstatement"]["params"])
unless value && Data.ddl_has_output?(ddl, value)
- raise DDLValidationError, "#{functionname}() does not return a #{value} value"
+ DDL.validation_fail!(:PLMC41, "Data plugin '%{functionname}()' does not return a '%{value}' value", :error, {:functionname => functionname, :value => value})
end
end
end
# publish a reply message by creating a target name and sending it
def publish
- Timeout.timeout(2) do
- # If we've been specificaly told about hosts that were discovered
- # use that information to do P2P calls if appropriate else just
- # send it as is.
- if @discovered_hosts && Config.instance.direct_addressing
- if @discovered_hosts.size <= Config.instance.direct_addressing_threshold
- self.type = :direct_request
- Log.debug("Handling #{requestid} as a direct request")
- end
-
- PluginManager["connector_plugin"].publish(self)
- else
- PluginManager["connector_plugin"].publish(self)
- end
+ # If we've been specificaly told about hosts that were discovered
+ # use that information to do P2P calls if appropriate else just
+ # send it as is.
+ config = Config.instance
+ if @discovered_hosts && config.direct_addressing && (@discovered_hosts.size <= config.direct_addressing_threshold)
+ self.type = :direct_request
+ Log.debug("Handling #{requestid} as a direct request")
end
+
+ PluginManager['connector_plugin'].publish(self)
end
def create_reqid