Git Product home page Git Product logo

perseo-fe's People

Contributors

alvarovega avatar cblanco avatar cesarjorgemartinez avatar crbrox avatar dependabot[bot] avatar devrnt avatar dmoranj avatar fgalan avatar fiqare-emergya-dev avatar jason-fox avatar jcalderin avatar jmcanterafonseca avatar leandroguillen avatar manucarrace avatar mapedraza avatar mrutid avatar rafaelm3 avatar rcarrata avatar rg2011 avatar samgh96 avatar vgarciag avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

perseo-fe's Issues

Think about no-signal timers

Think about implementation of checks for no-signal

What if the number of periods grows madly ...
How is the V8 implementation of timers ...

One timer for "rule" them all ? Just a few ones, with partitions?

Effort: 3 man day

Attribute value is not converts correctly when we are using no-signal

Rule

{ "VR" : { "active" : 1, "cards" : [    {       "sensorData" : {        "dataType" : "",        "measureName" : "alarm" },      "configData" : {         },     "sensorCardType" : "notUpdated",        "conditionList" : [     {       "Not" : false,    "scope" : "LAST_MEASURE",       "parameterValue" : "10",        "operator" : "EQUAL_TO",        "parameterName" : "" } ],       "timeData" : {  "interval" : "1",       "context" : "",         "repeat" : "-1" },      "type" : "SensorCard",    "id" : "card_1",        "connectedTo" : [       "card_2" ] },   {       "actionData" : {        "userParams" : [        {       "name" : "mail.from",   "value" : "[email protected]" },       {       "name" : "mail.to",       "value" : "[email protected]" },      {       "name" : "mail.subject",        "value" : "IoT message" },      {       "name" : "mail.message",        "value" : "ALARM: ${alarm} -- (Email rule)" } ],        "type" : "SendEmailAction",       "name" : "SendEmailAction" },   "type" : "ActionCard",  "id" : "card_7",        "connectedTo" : [       "card_8" ] } ], "name" : "test_01000000001", "service" : "/my_service", "tenant" : "my_tenant" }, "name" : "test_01000000001", "action" : { "type" : "email", "template" : "ALARM: ${alarm} -- (Email rule)", "parameters" : { "to" : "[email protected]", "from" : "[email protected]", "subject" : "IoT message" } }, "service" : "/my_service", "tenant" : "my_tenant", "nosignal" : { "checkInterval" : "1", "attribute" : "alarm", "reportInterval" : "10", "id" : null, "idRegexp" : null, "type" : null }, "_id" : ObjectId("54f494837f1358e30b8bec78") }

Context:

{ "_id" : { "type" : "room", "id" : "room_1", "servicePath" : "/my_service" }, "modDate" : 1406886193, "attrs" : [      {       "modDate" : 1406886193,         "type" : "void",        "name" : "alarm",       "value" : "danger",     "creDate" : 1406886193 } ], "creDate" : 1406886193 }

"template" : "ALARM: ${alarm} -- (Email rule)", in rule

email sent:

Receiving message from:  ('127.0.0.1', 56675)
Message addressed to  :  ['[email protected]']
Message length        :  357
smtp_counter 7
Message addressed from:  [email protected]
data info             :
Content-Type: text/plain
From: [email protected]
To: [email protected]
Subject: IoT message
X-Mailer: nodemailer (1.3.0; +http://www.nodemailer.com;
SMTP/0.1.13[client:1.1.0])
Content-Transfer-Encoding: 7bit
Date: Mon, 02 Mar 2015 16:53:07 +0000
Message-Id: <[email protected]>
MIME-Version: 1.0

ALARM: [?] -- (Email rule)

release.sh script doesn't change create-rpm.sh

(Similar problem to the one described in telefonicaid/fiware-pep-steelskin#126)

create-rpm.sh script including the following:

if [ -z "$CEP_VERSION" ]; then
  CEP_VERSION=0.4.0_next
fi

That CEP_VERSION=0.4.0_next is supposed to be changed by release.sh, in order to keep it synchronized regarding the version in the package.json package. However, current release.sh script is not doing so.

Clean test cases

Good names, good values, remove duplication, minimal set ...

Effort: 4 man day

Unify usage of "service" and "subservice" in all the code

(Raised in #37)

We should rationalize the usage of the service and subservice concetps in the code. Currently, there some problems:

  • The usage of old term "tenant" for service
  • The usage of "service" in places where actually it means "subservice"

So, a overall review of the code is needed to fix all this things and make code more maintenable.

Effort: 2 man day

PEP authentication in postAction.js or updateAction.js

Hi,
As I can see in the architecture of Perseo, the CEP is able to retrieve a token. I am using a keystone as IdM (https://github.com/ging/fi-ware-idm).
In the moment of the alert launched, the Action is calling to the keystone with a "Trust" attribute.

I can not find any documentation about this, and I have been trying by inserting trusted entities in the IdM database without any success.

Any hints please?
Thank you

Refactor config.js

This file has grown too much, many parameters are not installation dependent and complicates releasing/deployment with unnecessary noise. Extract values that change unlikely to other file that does not need a template for deployment

Effort: 1 man day

The rule type should be limit only to values allowed

Values allowed in rule type:

  • sms
  • email
  • update
  • twitter

At the moment, if a rule is triggered with wrong rule type (ex: rtert), the error is controlled in log.

time=2015-01-29T09:45:34.824Z | lvl=ERROR | corr=f93c2cc3-f301-45c4-8f6a-83b496e67994 | trans=597d1079-00b4-448a-9196-81cacc797694 | op=/actions/do | msg= unknown action type rtert

When the name of the tenant have not valid characteres, the error comes from express library

When a bad name of "tenant" is sent to perseo, perseo response with a 500 and the trace of the express library. It could be nice to have a parser of this errors, capture before fail, or format the failure

The act response is:

HttpCode received: 500 
     Body: {"error":"error post to http://10.95.82.36:8080/perseo-core/rules (Incorrect syntax near '-' at line 1 column 24 [create context ctxt$test-34$ partition by tenant from iotEvent(tenant=\"test-34\" and service=\"/\")])","data":null}

In notUpdated rule should not be created with values 0 or negative in interval field

Right now a notUpdated rule can be created with interval = 0 or negative. Therefore each 0 sec Perseo verifies against CB for know if the attribute is updated. Overloading perseo with multiple requests to CB. Other problem is each request write in log, so it can fill up and stop working perseo.

esample:

{
    "VR":{
        "active":1,
        "cards":[
            {
                "sensorData":{
                    "dataType":"",
                    "measureName":"temperature"
                },
                "configData":{
                },
                "sensorCardType":"notUpdated",
                "conditionList":[
                    {
                        "Not":false,
                        "scope":"LAST_MEASURE",
                        "parameterValue":"0",
                        "operator":"EQUAL_TO",
                        "parameterName":""
                    }
                ],
                "timeData":{
                    "interval":"0",
                    "context":"",
                    "repeat":"-1"
                },
                "type":"SensorCard",
                "id":"card_1",
                "connectedTo":[
                    "card_2"
                ]
            }
        ],
        "name":"test1200",
        "service":"/my_service",
        "tenant":"my_tenant"
    },
    "name":"test1200",
    "action":{
    },
    "service":"/my_service",
    "tenant":"my_tenant",
    "nosignal":{
        "checkInterval":"0",
        "attribute":"temperature",
        "reportInterval":"0",
        "id":null,
        "idRegexp":null,
        "type":null
    },
    "_id":ObjectId("54ddd89ed306f25859eae96b")
}

[Visual Rules] With update action card the "userParams" fields are not appended into parameters

mongo:

{
    "VR":{
        "active":1,
        "cards":[
            {
                "sensorData":{
                    "dataType":"Text",
                    "measureName":""
                },
                "configData":{
                },
                "sensorCardType":"type",
                "conditionList":[
                    {
                        "Not":false,
                        "scope":"XPATH",
                        "parameterValue":"room",
                        "operator":"DIFFERENT_TO",
                        "parameterName":"type"
                    }
                ],
                "timeData":{
                    "interval":"",
                    "context":"",
                    "repeat":"-1"
                },
                "type":"SensorCard",
                "id":"card_3",
                "connectedTo":[
                    "card_4"
                ]
            },
            {
                "sensorData":{
                    "dataType":"Quantity",
                    "measureName":"temperature"
                },
                "configData":{
                },
                "sensorCardType":"valueThreshold",
                "conditionList":[
                    {
                        "Not":false,
                        "scope":"OBSERVATION",
                        "parameterValue":"34",
                        "operator":"GREATER_THAN",
                        "parameterName":""
                    }
                ],
                "timeData":{
                    "interval":"",
                    "context":"",
                    "repeat":"-1"
                },
                "type":"SensorCard",
                "id":"card_4",
                "connectedTo":[
                    "card_5"
                ]
            },
            {
                "actionData":{
                    "userParams":[
                        {
                            "name":"ALARM",
                            "value":"DANGER"
                        }
                    ],
                    "type":"updateAttribute",
                    "name":"updateAttribute"
                },
                "type":"ActionCard",
                "id":"card_9",
                "connectedTo":[
                    "card_10"
                ]
            }
        ],
        "name":"test_1",
        "service":"/my_service",
        "tenant":"my_tenant"
    },
    "name":"test_1",
    "action":{
        "type":"update",
        "parameters":{
            "name":null,
            "value":null
        }
    },
    "service":"/my_service",
    "tenant":"my_tenant",
    "text":"select *,\"test_1\" as ruleName from pattern [every ev=iotEvent((cast(`type`?, String) != \"room\") AND (cast(cast(`temperature`?, String), float) > 34))]",
    "_id":ObjectId("54e1d8b91db9218a32a27575")
}

Error when the rule name is longer than 988 characters

Case NÂş1: Delete successfully (until 988):

Creating rule

  • Request
url: (POST  http://10.95.169.246:9090/rules)

Header: {'Fiware-Service': 'unknownT', 'Content-Type': 'application/json', 'Fiware-ServicePath': u'/', 'Accept': 'application/json'}

Body: {"action": {"type": "<rule_type>", "template": "Element ${Meter} has value <<<${attrName_0_var}>>> \n -- <template_info>", "parameters": null}, "text": "select *,\"ZwMCOdUoGsxqKR0VrFeqbDPmz7PUEfl0hH9PDPlb2gje0P1vouScgvAzFTfOYuLacF5T9ZN82hTZQ1tvRzR73N8aXBj9zb7alCqePOpMKGEHFIi5zKGRIGcFpimtVgc2udIsiFoPogKe9cMohQHOpQc3zEbZs5dsGc8pJUAPncmU0FAyTX8u97t0H3xrmS1OfL4zLpU16phzjLdzRoKgn32c69hJTlNbkK9J7h2oM9Wia80mRYiNKN1CwFRYqEFRynrOJ2oxgePFcTaEy20FqqhIdpJrVfMquUdd8Ax41JbUDeXXvORgFBnukTkRUGzrhTy58zDHcCTpHPoCb5lU9M5OlcE97OXS6fyJk9slh6C7Wq7YuInaJRBxepGn7ndRGghP8ejL5lyQlrM3hIaYyZg1Qb7vu7pXcsAurZ720UGICYmr5QJQGdfESwRZcozfbc2pldUrpLi5pFCdO28P2O2cH76o4oIFAY4rOPxFGBOMwudc8KwWtWybhxAKe9oa5U21wuD3fjgGX6zfwu21E7aFdopztkPxyyP8mIzaRNUDjB2rY6CzRiy8PqD82QL0if0l2HjDFnxjkmAXt4UE9lIP7TlR0ZmPijA1mZ43052v37WSjJ0X0fsLy573zMpixrqy7DfeCmyCWjmjk9MrViHfSFdNg5tfTQPzeVbXoK8mdg4odZKcPGV2tKoYzCxKw6PjPtXrcVx789z4LRtLYG5TX1c3Q8a33PYxARkEYJj6uYd5c9aF6azWDTLMB0FjZjouO8NYbLiVp2V3iuwLj4TpQhoUb4DPMqxaNKkp7b7nPrWhPuY3e4Og20c2aHCSzMZcrZGlltqKXKH6adOeZzOgj69C7QkBP2OX8iMAzTE2li0bXEIV5HFxwYpzQcy7N1ASilYppiWkF9wEc8JUJlk8PiSF3S8GC9FvNWkf3Kcmjz3FTNFzDmB9FQSQYxx9kivmOT1YOKna78DCZvgpiH0jVEmj\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name": "ZwMCOdUoGsxqKR0VrFeqbDPmz7PUEfl0hH9PDPlb2gje0P1vouScgvAzFTfOYuLacF5T9ZN82hTZQ1tvRzR73N8aXBj9zb7alCqePOpMKGEHFIi5zKGRIGcFpimtVgc2udIsiFoPogKe9cMohQHOpQc3zEbZs5dsGc8pJUAPncmU0FAyTX8u97t0H3xrmS1OfL4zLpU16phzjLdzRoKgn32c69hJTlNbkK9J7h2oM9Wia80mRYiNKN1CwFRYqEFRynrOJ2oxgePFcTaEy20FqqhIdpJrVfMquUdd8Ax41JbUDeXXvORgFBnukTkRUGzrhTy58zDHcCTpHPoCb5lU9M5OlcE97OXS6fyJk9slh6C7Wq7YuInaJRBxepGn7ndRGghP8ejL5lyQlrM3hIaYyZg1Qb7vu7pXcsAurZ720UGICYmr5QJQGdfESwRZcozfbc2pldUrpLi5pFCdO28P2O2cH76o4oIFAY4rOPxFGBOMwudc8KwWtWybhxAKe9oa5U21wuD3fjgGX6zfwu21E7aFdopztkPxyyP8mIzaRNUDjB2rY6CzRiy8PqD82QL0if0l2HjDFnxjkmAXt4UE9lIP7TlR0ZmPijA1mZ43052v37WSjJ0X0fsLy573zMpixrqy7DfeCmyCWjmjk9MrViHfSFdNg5tfTQPzeVbXoK8mdg4odZKcPGV2tKoYzCxKw6PjPtXrcVx789z4LRtLYG5TX1c3Q8a33PYxARkEYJj6uYd5c9aF6azWDTLMB0FjZjouO8NYbLiVp2V3iuwLj4TpQhoUb4DPMqxaNKkp7b7nPrWhPuY3e4Og20c2aHCSzMZcrZGlltqKXKH6adOeZzOgj69C7QkBP2OX8iMAzTE2li0bXEIV5HFxwYpzQcy7N1ASilYppiWkF9wEc8JUJlk8PiSF3S8GC9FvNWkf3Kcmjz3FTNFzDmB9FQSQYxx9kivmOT1YOKna78DCZvgpiH0jVEmj"}
  • Response
status code: 200

Header: {'content-length': '4987', 'unica-correlator': '9d35eb05-f8aa-48f6-8dc6-3b00a3b53a0f', 'x-content-type-options': 'nosniff', 'x-powered-by': 'Express', 'connection': 'keep-alive', 'date': 'Mon, 02 Feb 2015 09:26:02 GMT', 'content-type': 'application/json; charset=utf-8'}

Body: {"error":null,"data":[false,[{"code":200,"body":{"text":"create context ctxt$unknownt$ partition by tenant from iotEvent(tenant=\"unknownt\" and service=\"/\")","timeLastStateChange":1422868050718,"name":"ctxt$unknownt$","state":"STARTED"}},{"code":200,"body":{"text":"context ctxt$unknownt$ select *,\"ZwMCOdUoGsxqKR0VrFeqbDPmz7PUEfl0hH9PDPlb2gje0P1vouScgvAzFTfOYuLacF5T9ZN82hTZQ1tvRzR73N8aXBj9zb7alCqePOpMKGEHFIi5zKGRIGcFpimtVgc2udIsiFoPogKe9cMohQHOpQc3zEbZs5dsGc8pJUAPncmU0FAyTX8u97t0H3xrmS1OfL4zLpU16phzjLdzRoKgn32c69hJTlNbkK9J7h2oM9Wia80mRYiNKN1CwFRYqEFRynrOJ2oxgePFcTaEy20FqqhIdpJrVfMquUdd8Ax41JbUDeXXvORgFBnukTkRUGzrhTy58zDHcCTpHPoCb5lU9M5OlcE97OXS6fyJk9slh6C7Wq7YuInaJRBxepGn7ndRGghP8ejL5lyQlrM3hIaYyZg1Qb7vu7pXcsAurZ720UGICYmr5QJQGdfESwRZcozfbc2pldUrpLi5pFCdO28P2O2cH76o4oIFAY4rOPxFGBOMwudc8KwWtWybhxAKe9oa5U21wuD3fjgGX6zfwu21E7aFdopztkPxyyP8mIzaRNUDjB2rY6CzRiy8PqD82QL0if0l2HjDFnxjkmAXt4UE9lIP7TlR0ZmPijA1mZ43052v37WSjJ0X0fsLy573zMpixrqy7DfeCmyCWjmjk9MrViHfSFdNg5tfTQPzeVbXoK8mdg4odZKcPGV2tKoYzCxKw6PjPtXrcVx789z4LRtLYG5TX1c3Q8a33PYxARkEYJj6uYd5c9aF6azWDTLMB0FjZjouO8NYbLiVp2V3iuwLj4TpQhoUb4DPMqxaNKkp7b7nPrWhPuY3e4Og20c2aHCSzMZcrZGlltqKXKH6adOeZzOgj69C7QkBP2OX8iMAzTE2li0bXEIV5HFxwYpzQcy7N1ASilYppiWkF9wEc8JUJlk8PiSF3S8GC9FvNWkf3Kcmjz3FTNFzDmB9FQSQYxx9kivmOT1YOKna78DCZvgpiH0jVEmj\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","timeLastStateChange":1422869162518,"name":"ZwMCOdUoGsxqKR0VrFeqbDPmz7PUEfl0hH9PDPlb2gje0P1vouScgvAzFTfOYuLacF5T9ZN82hTZQ1tvRzR73N8aXBj9zb7alCqePOpMKGEHFIi5zKGRIGcFpimtVgc2udIsiFoPogKe9cMohQHOpQc3zEbZs5dsGc8pJUAPncmU0FAyTX8u97t0H3xrmS1OfL4zLpU16phzjLdzRoKgn32c69hJTlNbkK9J7h2oM9Wia80mRYiNKN1CwFRYqEFRynrOJ2oxgePFcTaEy20FqqhIdpJrVfMquUdd8Ax41JbUDeXXvORgFBnukTkRUGzrhTy58zDHcCTpHPoCb5lU9M5OlcE97OXS6fyJk9slh6C7Wq7YuInaJRBxepGn7ndRGghP8ejL5lyQlrM3hIaYyZg1Qb7vu7pXcsAurZ720UGICYmr5QJQGdfESwRZcozfbc2pldUrpLi5pFCdO28P2O2cH76o4oIFAY4rOPxFGBOMwudc8KwWtWybhxAKe9oa5U21wuD3fjgGX6zfwu21E7aFdopztkPxyyP8mIzaRNUDjB2rY6CzRiy8PqD82QL0if0l2HjDFnxjkmAXt4UE9lIP7TlR0ZmPijA1mZ43052v37WSjJ0X0fsLy573zMpixrqy7DfeCmyCWjmjk9MrViHfSFdNg5tfTQPzeVbXoK8mdg4odZKcPGV2tKoYzCxKw6PjPtXrcVx789z4LRtLYG5TX1c3Q8a33PYxARkEYJj6uYd5c9aF6azWDTLMB0FjZjouO8NYbLiVp2V3iuwLj4TpQhoUb4DPMqxaNKkp7b7nPrWhPuY3e4Og20c2aHCSzMZcrZGlltqKXKH6adOeZzOgj69C7QkBP2OX8iMAzTE2li0bXEIV5HFxwYpzQcy7N1ASilYppiWkF9wEc8JUJlk8PiSF3S8GC9FvNWkf3Kcmjz3FTNFzDmB9FQSQYxx9kivmOT1YOKna78DCZvgpiH0jVEmj@unknownt/","state":"STARTED"}},null],{"action":{"type":"<rule_type>","template":"Element ${Meter} has value <<<${attrName_0_var}>>> \n -- <template_info>","parameters":null},"text":"select *,\"ZwMCOdUoGsxqKR0VrFeqbDPmz7PUEfl0hH9PDPlb2gje0P1vouScgvAzFTfOYuLacF5T9ZN82hTZQ1tvRzR73N8aXBj9zb7alCqePOpMKGEHFIi5zKGRIGcFpimtVgc2udIsiFoPogKe9cMohQHOpQc3zEbZs5dsGc8pJUAPncmU0FAyTX8u97t0H3xrmS1OfL4zLpU16phzjLdzRoKgn32c69hJTlNbkK9J7h2oM9Wia80mRYiNKN1CwFRYqEFRynrOJ2oxgePFcTaEy20FqqhIdpJrVfMquUdd8Ax41JbUDeXXvORgFBnukTkRUGzrhTy58zDHcCTpHPoCb5lU9M5OlcE97OXS6fyJk9slh6C7Wq7YuInaJRBxepGn7ndRGghP8ejL5lyQlrM3hIaYyZg1Qb7vu7pXcsAurZ720UGICYmr5QJQGdfESwRZcozfbc2pldUrpLi5pFCdO28P2O2cH76o4oIFAY4rOPxFGBOMwudc8KwWtWybhxAKe9oa5U21wuD3fjgGX6zfwu21E7aFdopztkPxyyP8mIzaRNUDjB2rY6CzRiy8PqD82QL0if0l2HjDFnxjkmAXt4UE9lIP7TlR0ZmPijA1mZ43052v37WSjJ0X0fsLy573zMpixrqy7DfeCmyCWjmjk9MrViHfSFdNg5tfTQPzeVbXoK8mdg4odZKcPGV2tKoYzCxKw6PjPtXrcVx789z4LRtLYG5TX1c3Q8a33PYxARkEYJj6uYd5c9aF6azWDTLMB0FjZjouO8NYbLiVp2V3iuwLj4TpQhoUb4DPMqxaNKkp7b7nPrWhPuY3e4Og20c2aHCSzMZcrZGlltqKXKH6adOeZzOgj69C7QkBP2OX8iMAzTE2li0bXEIV5HFxwYpzQcy7N1ASilYppiWkF9wEc8JUJlk8PiSF3S8GC9FvNWkf3Kcmjz3FTNFzDmB9FQSQYxx9kivmOT1YOKna78DCZvgpiH0jVEmj\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","name":"ZwMCOdUoGsxqKR0VrFeqbDPmz7PUEfl0hH9PDPlb2gje0P1vouScgvAzFTfOYuLacF5T9ZN82hTZQ1tvRzR73N8aXBj9zb7alCqePOpMKGEHFIi5zKGRIGcFpimtVgc2udIsiFoPogKe9cMohQHOpQc3zEbZs5dsGc8pJUAPncmU0FAyTX8u97t0H3xrmS1OfL4zLpU16phzjLdzRoKgn32c69hJTlNbkK9J7h2oM9Wia80mRYiNKN1CwFRYqEFRynrOJ2oxgePFcTaEy20FqqhIdpJrVfMquUdd8Ax41JbUDeXXvORgFBnukTkRUGzrhTy58zDHcCTpHPoCb5lU9M5OlcE97OXS6fyJk9slh6C7Wq7YuInaJRBxepGn7ndRGghP8ejL5lyQlrM3hIaYyZg1Qb7vu7pXcsAurZ720UGICYmr5QJQGdfESwRZcozfbc2pldUrpLi5pFCdO28P2O2cH76o4oIFAY4rOPxFGBOMwudc8KwWtWybhxAKe9oa5U21wuD3fjgGX6zfwu21E7aFdopztkPxyyP8mIzaRNUDjB2rY6CzRiy8PqD82QL0if0l2HjDFnxjkmAXt4UE9lIP7TlR0ZmPijA1mZ43052v37WSjJ0X0fsLy573zMpixrqy7DfeCmyCWjmjk9MrViHfSFdNg5tfTQPzeVbXoK8mdg4odZKcPGV2tKoYzCxKw6PjPtXrcVx789z4LRtLYG5TX1c3Q8a33PYxARkEYJj6uYd5c9aF6azWDTLMB0FjZjouO8NYbLiVp2V3iuwLj4TpQhoUb4DPMqxaNKkp7b7nPrWhPuY3e4Og20c2aHCSzMZcrZGlltqKXKH6adOeZzOgj69C7QkBP2OX8iMAzTE2li0bXEIV5HFxwYpzQcy7N1ASilYppiWkF9wEc8JUJlk8PiSF3S8GC9FvNWkf3Kcmjz3FTNFzDmB9FQSQYxx9kivmOT1YOKna78DCZvgpiH0jVEmj","service":"/","tenant":"unknownt","_id":"54cf42aa8f1c04dc77caa5ae"},null]}

Deleting rule

  • Request
url: (DELETE  http://10.95.169.246:9090/rules/ZwMCOdUoGsxqKR0VrFeqbDPmz7PUEfl0hH9PDPlb2gje0P1vouScgvAzFTfOYuLacF5T9ZN82hTZQ1tvRzR73N8aXBj9zb7alCqePOpMKGEHFIi5zKGRIGcFpimtVgc2udIsiFoPogKe9cMohQHOpQc3zEbZs5dsGc8pJUAPncmU0FAyTX8u97t0H3xrmS1OfL4zLpU16phzjLdzRoKgn32c69hJTlNbkK9J7h2oM9Wia80mRYiNKN1CwFRYqE
FRynrOJ2oxgePFcTaEy20FqqhIdpJrVfMquUdd8Ax41JbUDeXXvORgFBnukTkRUGzrhTy58zDHcCTpHPoCb5lU9M5OlcE97OXS6fyJk9slh6C7Wq7YuInaJRBxepGn7ndRGghP8ejL5lyQlrM3hIaYyZg1Qb7vu7pXcsAurZ720UGICYmr5QJQGdfESwRZcozfbc2pldUrpLi5pFCdO28P2O2cH76o4oIFAY4rOPxFGBOMwudc8KwWtWybhxAKe9oa5U21wuD3fjgGX6zfwu21E7aFdopztkPxyyP8mIzaRN
UDjB2rY6CzRiy8PqD82QL0if0l2HjDFnxjkmAXt4UE9lIP7TlR0ZmPijA1mZ43052v37WSjJ0X0fsLy573zMpixrqy7DfeCmyCWjmjk9MrViHfSFdNg5tfTQPzeVbXoK8mdg4odZKcPGV2tKoYzCxKw6PjPtXrcVx789z4LRtLYG5TX1c3Q8a33PYxARkEYJj6uYd5c9aF6azWDTLMB0FjZjouO8NYbLiVp2V3iuwLj4TpQhoUb4DPMqxaNKkp7b7nPrWhPuY3e4Og20c2aHCSzMZcrZGlltqKXKH6adOeZz
Ogj69C7QkBP2OX8iMAzTE2li0bXEIV5HFxwYpzQcy7N1ASilYppiWkF9wEc8JUJlk8PiSF3S8GC9FvNWkf3Kcmjz3FTNFzDmB9FQSQYxx9kivmOT1YOKna78DCZvgpiH0jVEmj)

Header: ({'Fiware-Service': 'unknownT', 'Content-Type': 'application/json', 'Fiware-ServicePath': u'/', 'Accept': 'application/json'})
  • Response
status code: 200

Header: {'content-length': '2392', 'unica-correlator': 'ae9346a5-969e-4a50-ad28-01b0f06e8d92', 'x-content-type-options': 'nosniff', 'x-powered-by': 'Express', 'connection': 'keep-alive', 'date': 'Mon, 02 Feb 2015 09:26:02 GMT', 'content-type': 'application/json; charset=utf-8'}

Body: {"error":null,"data":[1,[{"code":200,"body":"{\"text\":\"context ctxt$unknownt$ select *,\\\"ZwMCOdUoGsxqKR0VrFeqbDPmz7PUEfl0hH9PDPlb2gje0P1vouScgvAzFTfOYuLacF5T9ZN82hTZQ1tvRzR73N8aXBj9zb7alCqePOpMKGEHFIi5zKGRIGcFpimtVgc2udIsiFoPogKe9cMohQHOpQc3zEbZs5dsGc8pJUAPncmU0FAyTX8u97t0H3xrmS1OfL4zLpU16phzjLdzRoKgn32c69hJTlNbkK9J7h2oM9Wia80mRYiNKN1CwFRYqEFRynrOJ2oxgePFcTaEy20FqqhIdpJrVfMquUdd8Ax41JbUDeXXvORgFBnukTkRUGzrhTy58zDHcCTpHPoCb5lU9M5OlcE97OXS6fyJk9slh6C7Wq7YuInaJRBxepGn7ndRGghP8ejL5lyQlrM3hIaYyZg1Qb7vu7pXcsAurZ720UGICYmr5QJQGdfESwRZcozfbc2pldUrpLi5pFCdO28P2O2cH76o4oIFAY4rOPxFGBOMwudc8KwWtWybhxAKe9oa5U21wuD3fjgGX6zfwu21E7aFdopztkPxyyP8mIzaRNUDjB2rY6CzRiy8PqD82QL0if0l2HjDFnxjkmAXt4UE9lIP7TlR0ZmPijA1mZ43052v37WSjJ0X0fsLy573zMpixrqy7DfeCmyCWjmjk9MrViHfSFdNg5tfTQPzeVbXoK8mdg4odZKcPGV2tKoYzCxKw6PjPtXrcVx789z4LRtLYG5TX1c3Q8a33PYxARkEYJj6uYd5c9aF6azWDTLMB0FjZjouO8NYbLiVp2V3iuwLj4TpQhoUb4DPMqxaNKkp7b7nPrWhPuY3e4Og20c2aHCSzMZcrZGlltqKXKH6adOeZzOgj69C7QkBP2OX8iMAzTE2li0bXEIV5HFxwYpzQcy7N1ASilYppiWkF9wEc8JUJlk8PiSF3S8GC9FvNWkf3Kcmjz3FTNFzDmB9FQSQYxx9kivmOT1YOKna78DCZvgpiH0jVEmj\\\" as ruleName, \\\"/\\\" as service, \\\"unknownT\\\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id?as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\\\"Room\\\")]\",\"timeLastStateChange\":1422869162818,\"name\":\"ZwMCOdUoGsxqKR0VrFeqbDPmz7PUEfl0hH9PDPlb2gje0P1vouScgvAzFTfOYuLacF5T9ZN82hTZQ1tvRzR73N8aXBj9zb7alCqePOpMKGEHFIi5zKGRIGcFpimtVgc2udIsiFoPogKe9cMohQHOpQc3zEbZs5dsGc8pJUAPncmU0FAyTX8u97t0H3xrmS1OfL4zLpU16phzjLdzRoKgn32c69hJTlNbkK9J7h2oM9Wia80mRYiNKN1CwFRYqEFRynrOJ2oxgePFcTaEy20FqqhIdpJrVfMquUdd8Ax41JbUDeXXvORgFBnukTkRUGzrhTy58zDHcCTpHPoCb5lU9M5OlcE97OXS6fyJk9slh6C7Wq7YuInaJRBxepGn7ndRGghP8ejL5lyQlrM3hIaYyZg1Qb7vu7pXcsAurZ720UGICYmr5QJQGdfESwRZcozfbc2pldUrpLi5pFCdO28P2O2cH76o4oIFAY4rOPxFGBOMwudc8KwWtWybhxAKe9oa5U21wuD3fjgGX6zfwu21E7aFdopztkPxyyP8mIzaRNUDjB2rY6CzRiy8PqD82QL0if0l2HjDFnxjkmAXt4UE9lIP7TlR0ZmPijA1mZ43052v37WSjJ0X0fsLy573zMpixrqy7DfeCmyCWjmjk9MrViHfSFdNg5tfTQPzeVbXoK8mdg4odZKcPGV2tKoYzCxKw6PjPtXrcVx789z4LRtLYG5TX1c3Q8a33PYxARkEYJj6uYd5c9aF6azWDTLMB0FjZjouO8NYbLiVp2V3iuwLj4TpQhoUb4DPMqxaNKkp7b7nPrWhPuY3e4Og20c2aHCSzMZcrZGlltqKXKH6adOeZzOgj69C7QkBP2OX8iMAzTE2li0bXEIV5HFxwYpzQcy7N1ASilYppiWkF9wEc8JUJlk8PiSF3S8GC9FvNWkf3Kcmjz3FTNFzDmB9FQSQYxx9kivmOT1YOKna78DCZvgpiH0jVEmj@unknownt/\",\"state\":\"DESTROYED\"}\n"},null],null]}

Case NÂş2: try to delete with 989 caracters in the rule name

Creating rule

  • request
url: (POST  http://10.95.169.246:9090/rules)

Header: {'Fiware-Service': 'unknownT', 'Content-Type': 'application/json', 'Fiware-ServicePath': u'/', 'Accept': 'application/json'}

Body: {"action": {"type": "<rule_type>", "template": "Element ${Meter} has value <<<${attrName_0_var}>>> \n -- <template_info>", "parameters": null}, "text": "select *,\"VYMy9KxuXGPLsWzmwx28LFT3JLkXtoSB9O7qTkNmd8W1AuWu3ifdiqT8RnNTQ798vBoPjHg7zRyLbJdZW36A7wkyNj19gGeS7EhoBJUakdw4lCi9sfhlc6PXtb65omc1EuJlRLuxLaZKBbxnRMygp2qvZHHNG3KnhqPQ9UOQW5Gzoy54Lhoc2cRM4PcfF2pVpC9ckmeR1hIrxsg54j4NlKa3pqfxOzOPFJl2rhWwkxA090a5Cb5fUeTExlWUslyXUeRujDElVhAcMfAWnW42Fa08dyra66UXjDG7JpCWcgKpDUcykLu0mXOLtcXYv6AFeN8kuqJskJC7npU78Dt2cxlXChlZDkNnHZgBLFus5c1yRN82RcoVthHfAtVqZ8LTWgRLz3UIpxmYVMIiLuTM5t3xNpZB2W2X9EJtPamnE0l7KL9MYnAAsXan82HLNNCkrTlF6XpMpDxCMaHYofXiTcUdFU2udChWG87ij3Rl3PxbRHfj4HVzjGCjlv7DFXKx5wW6PXyP27yCR8heCib2RTwOWPQyG4GgxE0dJ4NHeMue3nYIW2dh1DQU2j9QzR5uFtD6LWeAgwMcLggu49N25ErEQi0NlGzosVSmYdBU7LZpIr65Cgmty52spNVs6kl8ZiUr41FqGW2WMLuN5EltMoD9HmQaElwLxz0mmzDYDu2tc3fZZOEAESdvmqqFQBVsVDOZYAPHjvo1tW0Im7ZLQwRy39I4LODshIoIVAaUs9Wl0IcXL8U549tm4kWN7lkJ0hMfH0TCmfqSfhI1Fq3i7a0qO3yDDHB3rH7QR6Di5tWKeoT5B0g1WfVporWAmXahk8UyC01hDNxE0hH0vKjsOVaunHqt1Y3RDA03x3HuyJFTRwucteE5FMw4zEp74negGch4TGkyjFLD9VpCoI7o7tVMC94TxvdPRevVOz6UOOa59AMf1jPcjWOc7Z7w403qtXsjOByAukgvNBlEs5KA8N2bVc61B\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name": "VYMy9KxuXGPLsWzmwx28LFT3JLkXtoSB9O7qTkNmd8W1AuWu3ifdiqT8RnNTQ798vBoPjHg7zRyLbJdZW36A7wkyNj19gGeS7EhoBJUakdw4lCi9sfhlc6PXtb65omc1EuJlRLuxLaZKBbxnRMygp2qvZHHNG3KnhqPQ9UOQW5Gzoy54Lhoc2cRM4PcfF2pVpC9ckmeR1hIrxsg54j4NlKa3pqfxOzOPFJl2rhWwkxA090a5Cb5fUeTExlWUslyXUeRujDElVhAcMfAWnW42Fa08dyra66UXjDG7JpCWcgKpDUcykLu0mXOLtcXYv6AFeN8kuqJskJC7npU78Dt2cxlXChlZDkNnHZgBLFus5c1yRN82RcoVthHfAtVqZ8LTWgRLz3UIpxmYVMIiLuTM5t3xNpZB2W2X9EJtPamnE0l7KL9MYnAAsXan82HLNNCkrTlF6XpMpDxCMaHYofXiTcUdFU2udChWG87ij3Rl3PxbRHfj4HVzjGCjlv7DFXKx5wW6PXyP27yCR8heCib2RTwOWPQyG4GgxE0dJ4NHeMue3nYIW2dh1DQU2j9QzR5uFtD6LWeAgwMcLggu49N25ErEQi0NlGzosVSmYdBU7LZpIr65Cgmty52spNVs6kl8ZiUr41FqGW2WMLuN5EltMoD9HmQaElwLxz0mmzDYDu2tc3fZZOEAESdvmqqFQBVsVDOZYAPHjvo1tW0Im7ZLQwRy39I4LODshIoIVAaUs9Wl0IcXL8U549tm4kWN7lkJ0hMfH0TCmfqSfhI1Fq3i7a0qO3yDDHB3rH7QR6Di5tWKeoT5B0g1WfVporWAmXahk8UyC01hDNxE0hH0vKjsOVaunHqt1Y3RDA03x3HuyJFTRwucteE5FMw4zEp74negGch4TGkyjFLD9VpCoI7o7tVMC94TxvdPRevVOz6UOOa59AMf1jPcjWOc7Z7w403qtXsjOByAukgvNBlEs5KA8N2bVc61B"}
  • Response
status code: 200

Header: {'content-length': '4991', 'unica-correlator': '9f512ee0-c51c-414e-a317-50b40b0da43a', 'x-content-type-options': 'nosniff', 'x-powered-by': 'Express', 'connection': 'keep-alive', 'date': 'Mon, 02 Feb 2015 09:34:08 GMT', 'content-type': 'application/json; charset=utf-8'}

Body: {"error":null,"data":[false,[{"code":200,"body":{"text":"create context ctxt$unknownt$ partition by tenant from iotEvent(tenant=\"unknownt\" and service=\"/\")","timeLastStateChange":1422868050718,"name":"ctxt$unknownt$","state":"STARTED"}},{"code":200,"body":{"text":"context ctxt$unknownt$ select *,\"VYMy9KxuXGPLsWzmwx28LFT3JLkXtoSB9O7qTkNmd8W1AuWu3ifdiqT8RnNTQ798vBoPjHg7zRyLbJdZW36A7wkyNj19gGeS7EhoBJUakdw4lCi9sfhlc6PXtb65omc1EuJlRLuxLaZKBbxnRMygp2qvZHHNG3KnhqPQ9UOQW5Gzoy54Lhoc2cRM4PcfF2pVpC9ckmeR1hIrxsg54j4NlKa3pqfxOzOPFJl2rhWwkxA090a5Cb5fUeTExlWUslyXUeRujDElVhAcMfAWnW42Fa08dyra66UXjDG7JpCWcgKpDUcykLu0mXOLtcXYv6AFeN8kuqJskJC7npU78Dt2cxlXChlZDkNnHZgBLFus5c1yRN82RcoVthHfAtVqZ8LTWgRLz3UIpxmYVMIiLuTM5t3xNpZB2W2X9EJtPamnE0l7KL9MYnAAsXan82HLNNCkrTlF6XpMpDxCMaHYofXiTcUdFU2udChWG87ij3Rl3PxbRHfj4HVzjGCjlv7DFXKx5wW6PXyP27yCR8heCib2RTwOWPQyG4GgxE0dJ4NHeMue3nYIW2dh1DQU2j9QzR5uFtD6LWeAgwMcLggu49N25ErEQi0NlGzosVSmYdBU7LZpIr65Cgmty52spNVs6kl8ZiUr41FqGW2WMLuN5EltMoD9HmQaElwLxz0mmzDYDu2tc3fZZOEAESdvmqqFQBVsVDOZYAPHjvo1tW0Im7ZLQwRy39I4LODshIoIVAaUs9Wl0IcXL8U549tm4kWN7lkJ0hMfH0TCmfqSfhI1Fq3i7a0qO3yDDHB3rH7QR6Di5tWKeoT5B0g1WfVporWAmXahk8UyC01hDNxE0hH0vKjsOVaunHqt1Y3RDA03x3HuyJFTRwucteE5FMw4zEp74negGch4TGkyjFLD9VpCoI7o7tVMC94TxvdPRevVOz6UOOa59AMf1jPcjWOc7Z7w403qtXsjOByAukgvNBlEs5KA8N2bVc61B\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","timeLastStateChange":1422869648018,"name":"VYMy9KxuXGPLsWzmwx28LFT3JLkXtoSB9O7qTkNmd8W1AuWu3ifdiqT8RnNTQ798vBoPjHg7zRyLbJdZW36A7wkyNj19gGeS7EhoBJUakdw4lCi9sfhlc6PXtb65omc1EuJlRLuxLaZKBbxnRMygp2qvZHHNG3KnhqPQ9UOQW5Gzoy54Lhoc2cRM4PcfF2pVpC9ckmeR1hIrxsg54j4NlKa3pqfxOzOPFJl2rhWwkxA090a5Cb5fUeTExlWUslyXUeRujDElVhAcMfAWnW42Fa08dyra66UXjDG7JpCWcgKpDUcykLu0mXOLtcXYv6AFeN8kuqJskJC7npU78Dt2cxlXChlZDkNnHZgBLFus5c1yRN82RcoVthHfAtVqZ8LTWgRLz3UIpxmYVMIiLuTM5t3xNpZB2W2X9EJtPamnE0l7KL9MYnAAsXan82HLNNCkrTlF6XpMpDxCMaHYofXiTcUdFU2udChWG87ij3Rl3PxbRHfj4HVzjGCjlv7DFXKx5wW6PXyP27yCR8heCib2RTwOWPQyG4GgxE0dJ4NHeMue3nYIW2dh1DQU2j9QzR5uFtD6LWeAgwMcLggu49N25ErEQi0NlGzosVSmYdBU7LZpIr65Cgmty52spNVs6kl8ZiUr41FqGW2WMLuN5EltMoD9HmQaElwLxz0mmzDYDu2tc3fZZOEAESdvmqqFQBVsVDOZYAPHjvo1tW0Im7ZLQwRy39I4LODshIoIVAaUs9Wl0IcXL8U549tm4kWN7lkJ0hMfH0TCmfqSfhI1Fq3i7a0qO3yDDHB3rH7QR6Di5tWKeoT5B0g1WfVporWAmXahk8UyC01hDNxE0hH0vKjsOVaunHqt1Y3RDA03x3HuyJFTRwucteE5FMw4zEp74negGch4TGkyjFLD9VpCoI7o7tVMC94TxvdPRevVOz6UOOa59AMf1jPcjWOc7Z7w403qtXsjOByAukgvNBlEs5KA8N2bVc61B@unknownt/","state":"STARTED"}},null],{"action":{"type":"<rule_type>","template":"Element ${Meter} has value <<<${attrName_0_var}>>> \n -- <template_info>","parameters":null},"text":"select *,\"VYMy9KxuXGPLsWzmwx28LFT3JLkXtoSB9O7qTkNmd8W1AuWu3ifdiqT8RnNTQ798vBoPjHg7zRyLbJdZW36A7wkyNj19gGeS7EhoBJUakdw4lCi9sfhlc6PXtb65omc1EuJlRLuxLaZKBbxnRMygp2qvZHHNG3KnhqPQ9UOQW5Gzoy54Lhoc2cRM4PcfF2pVpC9ckmeR1hIrxsg54j4NlKa3pqfxOzOPFJl2rhWwkxA090a5Cb5fUeTExlWUslyXUeRujDElVhAcMfAWnW42Fa08dyra66UXjDG7JpCWcgKpDUcykLu0mXOLtcXYv6AFeN8kuqJskJC7npU78Dt2cxlXChlZDkNnHZgBLFus5c1yRN82RcoVthHfAtVqZ8LTWgRLz3UIpxmYVMIiLuTM5t3xNpZB2W2X9EJtPamnE0l7KL9MYnAAsXan82HLNNCkrTlF6XpMpDxCMaHYofXiTcUdFU2udChWG87ij3Rl3PxbRHfj4HVzjGCjlv7DFXKx5wW6PXyP27yCR8heCib2RTwOWPQyG4GgxE0dJ4NHeMue3nYIW2dh1DQU2j9QzR5uFtD6LWeAgwMcLggu49N25ErEQi0NlGzosVSmYdBU7LZpIr65Cgmty52spNVs6kl8ZiUr41FqGW2WMLuN5EltMoD9HmQaElwLxz0mmzDYDu2tc3fZZOEAESdvmqqFQBVsVDOZYAPHjvo1tW0Im7ZLQwRy39I4LODshIoIVAaUs9Wl0IcXL8U549tm4kWN7lkJ0hMfH0TCmfqSfhI1Fq3i7a0qO3yDDHB3rH7QR6Di5tWKeoT5B0g1WfVporWAmXahk8UyC01hDNxE0hH0vKjsOVaunHqt1Y3RDA03x3HuyJFTRwucteE5FMw4zEp74negGch4TGkyjFLD9VpCoI7o7tVMC94TxvdPRevVOz6UOOa59AMf1jPcjWOc7Z7w403qtXsjOByAukgvNBlEs5KA8N2bVc61B\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","name":"VYMy9KxuXGPLsWzmwx28LFT3JLkXtoSB9O7qTkNmd8W1AuWu3ifdiqT8RnNTQ798vBoPjHg7zRyLbJdZW36A7wkyNj19gGeS7EhoBJUakdw4lCi9sfhlc6PXtb65omc1EuJlRLuxLaZKBbxnRMygp2qvZHHNG3KnhqPQ9UOQW5Gzoy54Lhoc2cRM4PcfF2pVpC9ckmeR1hIrxsg54j4NlKa3pqfxOzOPFJl2rhWwkxA090a5Cb5fUeTExlWUslyXUeRujDElVhAcMfAWnW42Fa08dyra66UXjDG7JpCWcgKpDUcykLu0mXOLtcXYv6AFeN8kuqJskJC7npU78Dt2cxlXChlZDkNnHZgBLFus5c1yRN82RcoVthHfAtVqZ8LTWgRLz3UIpxmYVMIiLuTM5t3xNpZB2W2X9EJtPamnE0l7KL9MYnAAsXan82HLNNCkrTlF6XpMpDxCMaHYofXiTcUdFU2udChWG87ij3Rl3PxbRHfj4HVzjGCjlv7DFXKx5wW6PXyP27yCR8heCib2RTwOWPQyG4GgxE0dJ4NHeMue3nYIW2dh1DQU2j9QzR5uFtD6LWeAgwMcLggu49N25ErEQi0NlGzosVSmYdBU7LZpIr65Cgmty52spNVs6kl8ZiUr41FqGW2WMLuN5EltMoD9HmQaElwLxz0mmzDYDu2tc3fZZOEAESdvmqqFQBVsVDOZYAPHjvo1tW0Im7ZLQwRy39I4LODshIoIVAaUs9Wl0IcXL8U549tm4kWN7lkJ0hMfH0TCmfqSfhI1Fq3i7a0qO3yDDHB3rH7QR6Di5tWKeoT5B0g1WfVporWAmXahk8UyC01hDNxE0hH0vKjsOVaunHqt1Y3RDA03x3HuyJFTRwucteE5FMw4zEp74negGch4TGkyjFLD9VpCoI7o7tVMC94TxvdPRevVOz6UOOa59AMf1jPcjWOc7Z7w403qtXsjOByAukgvNBlEs5KA8N2bVc61B","service":"/","tenant":"unknownt","_id":"54cf44908f1c04dc77caa5af"},null]}

Deleting rule

  • Request
url: (DELETE  http://10.95.169.246:9090/rules/VYMy9KxuXGPLsWzmwx28LFT3JLkXtoSB9O7qTkNmd8W1AuWu3ifdiqT8RnNTQ798vBoPjHg7zRyLbJdZW36A7wkyNj19gGeS7EhoBJUakdw4lCi9sfhlc6PXtb65omc1EuJlRLuxLaZKBbxnRMygp2qvZHHNG3KnhqPQ9UOQW5Gzoy54Lhoc2cRM4PcfF2pVpC9ckmeR1hIrxsg54j4NlKa3pqfxOzOPFJl2rhWwkxA090a5Cb5fUeTExlWUslyXUeRujDElVhAcMfAWnW42Fa08dyra66UXjDG7JpCWcgKpDUcykLu0mXOLtcXYv6AFeN8kuqJskJC7npU78Dt2cxlXChlZDkNnHZgBLFus5c1yRN82RcoVthHfAtVqZ8LTWgRLz3UIpxmYVMIiLuTM5t3xNpZB2W2X9EJtPamnE0l7KL9MYnAAsXan82HLNNCkrTlF6XpMpDxCMaHYofXiTcUdFU2udChWG87ij3Rl3PxbRHfj4HVzjGCjlv7DFXKx5wW6PXyP27yCR8heCib2RTwOWPQyG4GgxE0dJ4NHeMue3nYIW2dh1DQU2j9QzR5uFtD6LWeAgwMcLggu49N25ErEQi0NlGzosVSmYdBU7LZpIr65Cgmty52spNVs6kl8ZiUr41FqGW2WMLuN5EltMoD9HmQaElwLxz0mmzDYDu2tc3fZZOEAESdvmqqFQBVsVDOZYAPHjvo1tW0Im7ZLQwRy39I4LODshIoIVAaUs9Wl0IcXL8U549tm4kWN7lkJ0hMfH0TCmfqSfhI1Fq3i7a0qO3yDDHB3rH7QR6Di5tWKeoT5B0g1WfVporWAmXahk8UyC01hDNxE0hH0vKjsOVaunHqt1Y3RDA03x3HuyJFTRwucteE5FMw4zEp74negGch4TGkyjFLD9VpCoI7o7tVMC94TxvdPRevVOz6UOOa59AMf1jPcjWOc7Z7w403qtXsjOByAukgvNBlEs5KA8N2bVc61B

Header: {'Fiware-Service': 'unknownT', 'Content-Type': 'application/json', 'Fiware-ServicePath': u'/', 'Accept': 'application/json'}

Body: ()
  • Response
status code: 200

Header: {'content-length': '2394', 'unica-correlator': 'c31c1592-df6c-423e-915f-5fa369e8fd40', 'x-content-type-options': 'nosniff', 'x-powered-by': 'Express', 'connection': 'keep-alive', 'date': 'Mon, 02 Feb 2015 09:34:08 GMT', 'content-type': 'application/json; charset=utf-8'}

Body: {"error":null,"data":[0,[{"code":200,"body":"{\"text\":\"context ctxt$unknownt$ select *,\\\"VYMy9KxuXGPLsWzmwx28LFT3JLkXtoSB9O7qTkNmd8W1AuWu3ifdiqT8RnNTQ798vBoPjHg7zRyLbJdZW36A7wkyNj19gGeS7EhoBJUakdw4lCi9sfhlc6PXtb65omc1EuJlRLuxLaZKBbxnRMygp2qvZHHNG3KnhqPQ9UOQW5Gzoy54Lhoc2cRM4PcfF2pVpC9ckmeR1hIrxsg54j4NlKa3pqfxOzOPFJl2rhWwkxA090a5Cb5fUeTExlWUslyXUeRujDElVhAcMfAWnW42Fa08dyra66UXjDG7JpCWcgKpDUcykLu0mXOLtcXYv6AFeN8kuqJskJC7npU78Dt2cxlXChlZDkNnHZgBLFus5c1yRN82RcoVthHfAtVqZ8LTWgRLz3UIpxmYVMIiLuTM5t3xNpZB2W2X9EJtPamnE0l7KL9MYnAAsXan82HLNNCkrTlF6XpMpDxCMaHYofXiTcUdFU2udChWG87ij3Rl3PxbRHfj4HVzjGCjlv7DFXKx5wW6PXyP27yCR8heCib2RTwOWPQyG4GgxE0dJ4NHeMue3nYIW2dh1DQU2j9QzR5uFtD6LWeAgwMcLggu49N25ErEQi0NlGzosVSmYdBU7LZpIr65Cgmty52spNVs6kl8ZiUr41FqGW2WMLuN5EltMoD9HmQaElwLxz0mmzDYDu2tc3fZZOEAESdvmqqFQBVsVDOZYAPHjvo1tW0Im7ZLQwRy39I4LODshIoIVAaUs9Wl0IcXL8U549tm4kWN7lkJ0hMfH0TCmfqSfhI1Fq3i7a0qO3yDDHB3rH7QR6Di5tWKeoT5B0g1WfVporWAmXahk8UyC01hDNxE0hH0vKjsOVaunHqt1Y3RDA03x3HuyJFTRwucteE5FMw4zEp74negGch4TGkyjFLD9VpCoI7o7tVMC94TxvdPRevVOz6UOOa59AMf1jPcjWOc7Z7w403qtXsjOByAukgvNBlEs5KA8N2bVc61B\\\" as ruleName, \\\"/\\\" as service, \\\"unknownT\\\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id?as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\\\"Room\\\")]\",\"timeLastStateChange\":1422869648318,\"name\":\"VYMy9KxuXGPLsWzmwx28LFT3JLkXtoSB9O7qTkNmd8W1AuWu3ifdiqT8RnNTQ798vBoPjHg7zRyLbJdZW36A7wkyNj19gGeS7EhoBJUakdw4lCi9sfhlc6PXtb65omc1EuJlRLuxLaZKBbxnRMygp2qvZHHNG3KnhqPQ9UOQW5Gzoy54Lhoc2cRM4PcfF2pVpC9ckmeR1hIrxsg54j4NlKa3pqfxOzOPFJl2rhWwkxA090a5Cb5fUeTExlWUslyXUeRujDElVhAcMfAWnW42Fa08dyra66UXjDG7JpCWcgKpDUcykLu0mXOLtcXYv6AFeN8kuqJskJC7npU78Dt2cxlXChlZDkNnHZgBLFus5c1yRN82RcoVthHfAtVqZ8LTWgRLz3UIpxmYVMIiLuTM5t3xNpZB2W2X9EJtPamnE0l7KL9MYnAAsXan82HLNNCkrTlF6XpMpDxCMaHYofXiTcUdFU2udChWG87ij3Rl3PxbRHfj4HVzjGCjlv7DFXKx5wW6PXyP27yCR8heCib2RTwOWPQyG4GgxE0dJ4NHeMue3nYIW2dh1DQU2j9QzR5uFtD6LWeAgwMcLggu49N25ErEQi0NlGzosVSmYdBU7LZpIr65Cgmty52spNVs6kl8ZiUr41FqGW2WMLuN5EltMoD9HmQaElwLxz0mmzDYDu2tc3fZZOEAESdvmqqFQBVsVDOZYAPHjvo1tW0Im7ZLQwRy39I4LODshIoIVAaUs9Wl0IcXL8U549tm4kWN7lkJ0hMfH0TCmfqSfhI1Fq3i7a0qO3yDDHB3rH7QR6Di5tWKeoT5B0g1WfVporWAmXahk8UyC01hDNxE0hH0vKjsOVaunHqt1Y3RDA03x3HuyJFTRwucteE5FMw4zEp74negGch4TGkyjFLD9VpCoI7o7tVMC94TxvdPRevVOz6UOOa59AMf1jPcjWOc7Z7w403qtXsjOByAukgvNBlEs5KA8N2bVc61B@unknownt/\",\"state\":\"DESTROYED\"}\n"},null],null]}

Append to doc a case with json template to POST action

Append a doc a case with json template to POST action, example:

{"action": {"type": "post", "parameters": {"URL": "http://qa-orion-cep-01:9998/send/post"}, "template": "{\"message\": \"Element ${Meter} has value <<<${attrName_0_var}>>> \\n -- (post rule)\"}"}, "text": "select *,\"post___name\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.at
trName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"room\")]", "name": "post___name"}

Further, use only JSON format.

Effort: 1 man day

Parameters/default values for service/tenant in script examples

fermin added a note some time days ago

Si Fiware-Service y Fiware-ServicePath son cabeceras siempre comunes, Âżigual tiene sentido incluirlas como variables en config.env y usar esas variables? Salvo que lo hayas hecho asĂ­ por tener flexibilidad en que cada test use las suyas (en cuyo caso igual serĂ­a mejor tenerlas paremetrizadas).

O igual una combinaciĂłn de ambas:

Se usan unos parĂĄmetros del scripts para coger Fiware-Service y Fiware-ServicePath (pe $1 y $2)
Si no se usan parĂĄmetros (pe. $1, $2), entonces se toman unos de defectos cogidos de config.env

Effort: 1 man day

In service path header "/" is obligatory

cases allowed: "/", "/garden", "/garden2", "/garden2_a3" and the "/" is obligatory

wrong cases but allowed and rules are created:

Case NÂş1 ( "test" )

response

 HttpCode received: 200
{"error":null,"data":[false,[{"code":200,"body":{"text":"create context ctxt$tenanttest partition by tenant from iotEvent(tenant=\"tenant\" and service=\"test\")","timeLastStateChange":1422460038109,"name":"ctxt$tenanttest","state":"STARTED"}},{"code":200,"body":{"text":"context ctxt$tenanttest select *,\"name_test\" as ruleName, \"test\" as service, \"tenant\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","timeLastStateChange":1422460038109,"name":"name_test@tenanttest","state":"STARTED"}},null],{"action":{"type":"sms","template":"Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)","parameters":{"to":"123456789"}},"text":"select *,\"name_test\" as ruleName, \"test\" as service, \"tenant\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","name":"name_test","service":"test","tenant":"tenant","_id":"54c904863a7608293a945f6a"},null]}

mongo

{ "action" : { "type" : "sms", "template" : "Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)", "parameters" : { "to" : "123456789" } }, "text" : "select *,\"name_test\" as ruleName, \"test\" as service, \"tenant\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name" : "name_test", "service" : "test", "tenant" : "tenant", "_id" : ObjectId("54c904863a7608293a945f6a") }

Case NÂş2 ( "test45" )

response

HttpCode received: 200
{"error":null,"data":[false,[{"code":200,"body":{"text":"create context ctxt$tenanttest45 partition by tenant from iotEvent(tenant=\"tenant\" and service=\"test45\")","timeLastStateChange":1422460038609,"name":"ctxt$tenanttest45","state":"STARTED"}},{"code":200,"body":{"text":"context ctxt$tenanttest45 select *,\"name_test\" as ruleName, \"test45\" as service, \"tenant\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","timeLastStateChange":1422460038609,"name":"name_test@tenanttest45","state":"STARTED"}},null],{"action":{"type":"sms","template":"Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)","parameters":{"to":"123456789"}},"text":"select *,\"name_test\" as ruleName, \"test45\" as service, \"tenant\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","name":"name_test","service":"test45","tenant":"tenant","_id":"54c904863a7608293a945f6b"},null]}

mongo

{ "action" : { "type" : "sms", "template" : "Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)", "parameters" : { "to" : "123456789" } }, "text" : "select *,\"name_test\" as ruleName, \"test45\" as service, \"tenant\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name" : "name_test", "service" : "test45", "tenant" : "tenant", "_id" : ObjectId("54c904863a7608293a945f6b") }

Case NÂş3 ( "test45_5" )

response

HttpCode received: 200
{"error":null,"data":[false,[{"code":200,"body":{"text":"create context ctxt$tenanttest45_5 partition by tenant from iotEvent(tenant=\"tenant\" and service=\"test45_5\")","timeLastStateChange":1422460039209,"name":"ctxt$tenanttest45_5","state":"STARTED"}},{"code":200,"body":{"text":"context ctxt$tenanttest45_5 select *,\"name_test\" as ruleName, \"test45_5\" as service, \"tenant\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","timeLastStateChange":1422460039209,"name":"name_test@tenanttest45_5","state":"STARTED"}},null],{"action":{"type":"sms","template":"Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)","parameters":{"to":"123456789"}},"text":"select *,\"name_test\" as ruleName, \"test45_5\" as service, \"tenant\" as tenant, *, ev.attrName_0? asattrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","name":"name_test","service":"test45_5","tenant":"tenant","_id":"54c904873a7608293a945f6c"},null]}

mongo

{ "action" : { "type" : "sms", "template" : "Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)", "parameters" : { "to" : "123456789" } }, "text" : "select *,\"name_test\" as ruleName, \"test45_5\" as service, \"tenant\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name" : "name_test", "service" : "test45_5", "tenant" : "tenant", "_id" : ObjectId("54c904873a7608293a945f6c") }

some wrong cases are allowed in service (tenant) name

Case NÂş1 ( test/34 )
response

HttpCode received: 200

{"error":null,"data":[false,[{"code":200,"body":{"text":"create context ctxt$test$34$ partition by tenant from iotEvent(tenant=\"test/34\" and service=\"/\")","timeLastStateChange":1422457220609,"name":"ctxt$test$34$","state":"STARTED"}},{"code":200,"body":{"text":"context ctxt$test$34$ select *,\"name_test\" as ruleName, \"/\" as service, \"test/34\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","timeLastStateChange":1422457220609,"name":"name_test@test/34/","state":"STARTED"}},null],{"action":{"type":"sms","template":"Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)","parameters":{"to":"123456789"}},"text":"select *,\"name_test\" as ruleName, \"/\" as service, \"test/34\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","name":"name_test","service":"/","tenant":"test/34","_id":"54c8f9843a7608293a945f60"},null]}

Mongo

{ "action" : { "type" : "sms", "template" : "Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)", "parameters" : { "to" : "123456789" } }, "text" : "select *,\"name_test\" as ruleName, \"/\" as service, \"test/34\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name" : "name_test", "service" : "/", "tenant" : "test/34", "_id" : ObjectId("54c8f9843a7608293a945f60") }

case NÂş2 ( tenant longer than 50 characters )

response

HttpCode received: 200

{"error":null,"data":[false,[{"code":200,"body":{"text":"create context ctxt$py7nwj9kvdnb6b4c7w0ihgqysg0ne4rlpyhpdvadz8ka05uuwuu$ partition by tenant from iotEvent(tenant=\"py7nwj9kvdnb6b4c7w0ihgqysg0ne4rlpyhpdvadz8ka05uuwuu\" and service=\"/\")","timeLastStateChange":1422457221409,"name":"ctxt$py7nwj9kvdnb6b4c7w0ihgqysg0ne4rlpyhpdvadz8ka05uuwuu$","state":"STARTED"}},{"code":200,"body":{"text":"context ctxt$py7nwj9kvdnb6b4c7w0ihgqysg0ne4rlpyhpdvadz8ka05uuwuu$ select *,\"name_test\" as ruleName, \"/\" as service, \"pY7Nwj9KVdnb6b4c7w0ihgqYSG0NE4RlPYhpdVADz8KA05uUWuu\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","timeLastStateChange":1422457221409,"name":"name_test@py7nwj9kvdnb6b4c7w0ihgqysg0ne4rlpyhpdvadz8ka05uuwuu/","state":"STARTED"}},null],{"action":{"type":"sms","template":"Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)","parameters":{"to":"123456789"}},"text":"select *,\"name_test\" as ruleName, \"/\" as service, \"pY7Nwj9KVdnb6b4c7w0ihgqYSG0NE4RlPYhpdVADz8KA05uUWuu\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]","name":"name_test","service":"/","tenant":"py7nwj9kvdnb6b4c7w0ihgqysg0ne4rlpyhpdvadz8ka05uuwuu","_id":"54c8f9853a7608293a945f61"},null]}

mongo

{ "action" : { "type" : "sms", "template" : "Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)", "parameters" : { "to" : "123456789" } }, "text" : "select *,\"name_test\" as ruleName, \"/\" as service, \"pY7Nwj9KVdnb6b4c7w0ihgqYSG0NE4RlPYhpdVADz8KA05uUWuu\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name" : "name_test", "service" : "/", "tenant" : "py7nwj9kvdnb6b4c7w0ihgqysg0ne4rlpyhpdvadz8ka05uuwuu", "_id" : ObjectId("54c8f9853a7608293a945f61") }

rule names that must not be allowed

rule names:

  • empty (rule delete is imposible with API) "Cannot DELETE /rules/"
{ "action" : { "type" : "sms", "template" : "Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)", "parameters" : { "to" : "123456789" } }, "text" : "select *,\"\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name" : "", "service" : "/", "tenant" : "unknownt", "_id" : ObjectId("54c9f9c93a7608293a945fb1") }
  • with "/" character (rule delete is imposible with API) "Cannot DELETE /rules/test/34"
{ "action" : { "type" : "sms", "template" : "Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)", "parameters" : { "to" : "123456789" } }, "text" : "select *,\"test/34\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name" : "test/34", "service" : "/", "tenant" : "unknownt", "_id" : ObjectId("54c9f9ca3a7608293a945fb2") }
  • longer than 1000 characters
{ "action" : { "type" : "sms", "template" : "Element ${Meter} has value <<<${attrName_0_var}>>> \n --  (SMS rule)", "parameters" : { "to" : "123456789" } }, "text" : "select *,\"E35IiN7MSkbq3fXPo4GWQpkY2hH59A1fn0isn3TDEE8ZLH2c8QjOOZSfrkh5m8emgeSBWywN9qAnNl9XIwdWVOcNEiW4sghyGjRY2QQU2HuJQVokLutywPVH6JgoRTWzpd8SytvQISCmPAX7TVI3JZrRIvP2HuxaBRYPUybu3Jn4l1UhkWvtpfAGEIncGl4VxWa7juo2YuBaObDYKP6tLiNPJHwtuid9LA7gdBStDU8tB4qlhrS23o45Kt3Ln59saOvcazFmZdx4vlfHGnOZztFIkxPTTGv9vkcNPcpwbBEXbPHoeMbpyhKePeRomynugq1U7FENvv2g6Hr9F1B6tWVpIMDXpgL6jBMlGe3Nnjo0tckuOVhHgljFeIDQe7hBbh2cV2nMT9QAxc8iS08tbQmrUYNwVCOK0x4Y6IVDiBSQ7asQ8dRVyesIpMHpgHfs47elbpA5KnPj9yy4IDoyVm1skpnFMUHnWdYlwNsGtMBbbDMUghquCgoU7RU3jmPCkCOQ4FPwqTYwavcVzgbZIF9H2uPG7RteSePdkm76HYMEbl4v86K7usZKV4auXTgBRsYKueBQR1gUwx8V1tmmo7Tr7GDihOBFV23kVcuRv7MWzwxxLtVpakqEictEexZ7B8W3RCW8JSgOuMkvOjVL1tBMvGyLhiGVxNjzxLDKmSYfLpR5qgJTaE1HbYD1Xrq3xVPfQzV88qV9JeVyz7ab2y70uI8cOeUK4L7qe0fwpTreaEZ4Fzgl8PCDDhxxVs6cOjPqTi7ottVMxd8LilY4xbDeNNsnFlfFMUxYGvtMpc3dpWDN5YTuB7bQYqsep9vb8IlrqfjxWJOVqambf8Qrqkt0stPE24odSSgvz79cMjkzWfYRBDw24D3eJjK6qk9v4eJ8N0MBZwZU8TeztXLPP2PW2vEwyG0kUJkdwxqblKtpCig9Mtn5tdMJxtq093kz5g9MeQNEGBpuJ9NZvo6CXVjl7DLE9DIszhIwZMGRo\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"Room\")]", "name" : "E35IiN7MSkbq3fXPo4GWQpkY2hH59A1fn0isn3TDEE8ZLH2c8QjOOZSfrkh5m8emgeSBWywN9qAnNl9XIwdWVOcNEiW4sghyGjRY2QQU2HuJQVokLutywPVH6JgoRTWzpd8SytvQISCmPAX7TVI3JZrRIvP2HuxaBRYPUybu3Jn4l1UhkWvtpfAGEIncGl4VxWa7juo2YuBaObDYKP6tLiNPJHwtuid9LA7gdBStDU8tB4qlhrS23o45Kt3Ln59saOvcazFmZdx4vlfHGnOZztFIkxPTTGv9vkcNPcpwbBEXbPHoeMbpyhKePeRomynugq1U7FENvv2g6Hr9F1B6tWVpIMDXpgL6jBMlGe3Nnjo0tckuOVhHgljFeIDQe7hBbh2cV2nMT9QAxc8iS08tbQmrUYNwVCOK0x4Y6IVDiBSQ7asQ8dRVyesIpMHpgHfs47elbpA5KnPj9yy4IDoyVm1skpnFMUHnWdYlwNsGtMBbbDMUghquCgoU7RU3jmPCkCOQ4FPwqTYwavcVzgbZIF9H2uPG7RteSePdkm76HYMEbl4v86K7usZKV4auXTgBRsYKueBQR1gUwx8V1tmmo7Tr7GDihOBFV23kVcuRv7MWzwxxLtVpakqEictEexZ7B8W3RCW8JSgOuMkvOjVL1tBMvGyLhiGVxNjzxLDKmSYfLpR5qgJTaE1HbYD1Xrq3xVPfQzV88qV9JeVyz7ab2y70uI8cOeUK4L7qe0fwpTreaEZ4Fzgl8PCDDhxxVs6cOjPqTi7ottVMxd8LilY4xbDeNNsnFlfFMUxYGvtMpc3dpWDN5YTuB7bQYqsep9vb8IlrqfjxWJOVqambf8Qrqkt0stPE24odSSgvz79cMjkzWfYRBDw24D3eJjK6qk9v4eJ8N0MBZwZU8TeztXLPP2PW2vEwyG0kUJkdwxqblKtpCig9Mtn5tdMJxtq093kz5g9MeQNEGBpuJ9NZvo6CXVjl7DLE9DIszhIwZMGRo", "service" : "/", "tenant" : "unknownt", "_id" : ObjectId("54ca07b83a7608293a945fb7") }

[VISUAL RULES] Parameters are not convert correctly in the actions - In the develop branch.

This case is only against the develop branch, in the release/0.4.1 branch works perfectly.

visual rule with email action

url: POST  http://<ip>:<port>/m2m/vrules

Header: {'Fiware-Service': 'unknownt', 'Content-Type': 'application/json', 'Fiware-ServicePath': '/', 'Accept': 'application/json', 'X-Auth-Token': 'tokenValue'}

Body: {"active": 1, "cards": [{"sensorData": {"dataType": "Quantity", "measureName": "temperature_0"}, "configData": {}, "sensorCardType": "valueThreshold", "conditionList": [{"Not": false, "scope": "OBSERVATION", "parameterValue": "34", "operator": "GREATER_THAN", "parameterName": ""}], "timeData": {"interval": "", "context": "", "repeat": "-1"}, "type": "SensorCard", "id": "card_4", "connectedTo": ["card_5"]}, {"actionData": {"userParams": [{"name": "mail.from", "value": "[email protected]"}, {"name": "mail.to", "value": "[email protected]"}, {"name": "mail.subject", "value": "IoT message"},{"name": "mail.message", "value": "${temperature_0} -- (Email rule)"}], "type": "SendEmailAction", "name": "SendEmailAction"}, "type": "ActionCard", "id": "card_5", "connectedTo": ["card_8"]}], "name": "test_200000000001"}

Notification

url: POST  http://<ip>:<port>/notices

Header: {'Fiware-Service': 'unknownt', 'Content-Type': 'application/json', 'Fiware-ServicePath': '/', 'Accept': 'application/json', 'User-Agent': 'orion/0.10.0'}

Body: {"originator": "localhost", "subscriptionId": "51c0ac9ed714fb3b37d7d5a8", "contextResponses": [{"contextElement": {"attributes": [{"type": "celcius", "name": "temperature_0", "value": "300", "metadatas": [{"type": "type_NjMJ", "name": "name_jlAq", "value": "Ba15"}]}], "type": "Room", "id": "room2", "isPattern": "false"}, "statusCode": {"code": "200", "reasonPhrase": "OK"}}]}

Mongo

{ "VR" : { "active" : 1, "cards" : [    {       "sensorData" : {        "dataType" : "Quantity",        "measureName" : "temperature_0" },      "configData" : {         },     "sensorCardType" : "valueThreshold",        "conditionList" : [     {       "Not" : false,  "scope" : "OBSERVATION",        "parameterValue" : "34",        "operator" : "GREATER_THAN",    "parameterName" : "" } ],       "timeData" : {      "interval" : "",        "context" : "",         "repeat" : "-1" },      "type" : "SensorCard",  "id" : "card_4",        "connectedTo" : [       "card_5" ] },   {       "actionData" : {        "userParams" : [    {       "name" : "mail.from",   "value" : "[email protected]" },       {       "name" : "mail.to",     "value" : "[email protected]" },  {       "name" : "mail.subject",        "value" : "IoT message" },  {       "name" : "mail.message",        "value" : "${temperature_0} -- (Email rule)" } ],       "type" : "SendEmailAction",     "name" : "SendEmailAction" },   "type" : "ActionCard",  "id" : "card_5",    "connectedTo" : [       "card_8" ] } ], "name" : "test_200000000001", "service" : "/", "tenant" : "unknownt" }, "name" : "test_200000000001", "action" : { "type" : "email", "template" : "${ev__temperature_0} -- (Email rule)", "parameters" : { "to" : "[email protected]", "from" : "[email protected]", "subject" : "IoT message" } }, "service" : "/", "tenant" : "unknownt", "text" : "select *,\"test_200000000001\" as ruleName from pattern [every ev=iotEvent((cast(cast(`temperature_0`?, String), float)  >  34))]", "_id" : ObjectId("54eef0e359a836af03eecbc9") }

Mock response

Body: {"smtp_peer": ["127.0.0.1", 44741], "smtp_mailfrom": "[email protected]", "smtp_rcpttos": ["[email protected]"], "smtp_counter": 11, "smtp_data": "Content-Type: text/plain\nFrom: [email protected]\nTo: [email protected]\nSubject: IoT message\nX-Mailer: nodemailer (1.3.0; +http://www.nodemailer.com;\n SMTP/0.1.13[client:1.1.0])\nContent-Transfer-Encoding: 7bit\nDate: Thu, 26 Feb 2015 10:09:39 +0000\nMessage-Id: <[email protected]>\nMIME-Version: 1.0\n\n[?] -- (Email rule)"}

Add check for entity attributes pass out to EPL

Check if ${} expressions are "valid"

Agreed with portal, they also check:
// RegExp:
// - Alphanumeric
// - Must start with a letter
// - Allow: . (dot) _ (underscore)
// - Not allow: __ (two underscores consecutively) - (hypens)

Effort: 2 man day

Use perseo-fe in all the places where it makes sense

We start to using "perseo-fe" as repo name at publishing time. However, internally single "perseo" is still being use.

We should change all the tokens in order to use "perseo-fe" in the proper places. For example, the RPM name, the perseo-fe.log file, etc.

Effort: 1 man day

Error if parameter "type" exist in Update action

LOG Message:

time=2015-01-28T14:11:22.897Z | lvl=ERROR | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=cf85f9d0-92aa-401a-b3e0-bfaa1621fc9c | op=/actions/do | msg=TypeError: Cannot read property '0' of undefined

Rule created

------------------------------ Request ----------------------------------------------
url: (POST  http://10.95.169.246:9090/rules)

Header: {'Fiware-Service': 'unknownT', 'Content-Type': 'application/json', 'Fiware-ServicePath': u'/', 'Accept': 'application/json'}


Body: {"action": {"type": "update", "parameters": {"type": "message", "name": "ALARM", "value": "warning"}}, "text": "select *,\"update_name\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"room\")]", "name": "update_name"}


---------------------------------- Response ----------------------------------------------
status code: 200

Header: {'content-length': '1035', 'unica-correlator': '0f2a2db6-c776-4a5e-970d-c6f70c76d746', 'x-content-type-options': 'nosniff', 'x-powered-by': 'Express', 'connection': 'keep-alive', 'date': 'Wed, 28 Jan 2015 14:14:55 GMT', 'content-type': 'application/json; charset=utf-8'}

Body: {"error":null,"data":[false,[{"code":200,"body":{"text":"create context ctxt$unknownt$ partition by tenant from iotEvent(tenant=\"unknownt\" and service=\"/\")","timeLastStateChange":1422454282609,"name":"ctxt$unknownt$","state":"STARTED"}},{"code":200,"body":{"text":"context ctxt$unknownt$ select *,\"update_name\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"room\")]","timeLastStateChange":1422454282609,"name":"update_name@unknownt/","state":"STARTED"}},null],{"action":{"type":"update","parameters":{"type":"message","name":"ALARM","value":"warning"}},"text":"select *,\"update_name\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"room\")]","name":"update_name","service":"/","tenant":"unknownt","_id":"54c8eedf3a7608293a945da1"},null]}

Notification

------------------------------ Request ----------------------------------------------
url: (POST  http://10.95.169.246:9090/notices)

Header: ({'Fiware-Service': 'unknownT', 'Content-Type': 'application/json', 'Fiware-ServicePath': u'/', 'Accept': 'application/json', 'User-Agent': 'orion/0.10.0'})

Body: {"originator": "localhost", "subscriptionId": "51c0ac9ed714fb3b37d7d5a8", "contextResponses": [{"contextElement": {"attributes": [{"type": "celcius", "name": "attrName_0", "value": "300", "metadatas": [{"type": "type_EHo0", "name": "name_LufR", "value": "jxdF"}]}], "type": "room", "id": "room2", "isPattern": "false"}, "statusCode": {"code": "200", "reasonPhrase": "OK"}}]})

---------------------------------- Response ----------------------------------------------
status code: 200

Header: {'content-length': '34', 'unica-correlator': '87de3f8d-5c59-4b79-8ca8-dc4212425b98', 'x-content-type-options': 'nosniff', 'x-powered-by': 'Express', 'connection': 'keep-alive', 'date': 'Wed, 28 Jan 2015 14:14:55 GMT', 'content-type': 'application/json; charset=utf-8'}

Body: ({"error":null,"data":{"code":200}})

Mock

------------------------------ Request ----------------------------------------------
url: (GET  http://qa-orion-cep-01:9998/get/update)

---------------------------------- Response ----------------------------------------------
status code: 200

Header: {'date': 'Wed, 28 Jan 2015 14:15:01 GMT', 'content-length': '51', 'content-type': 'application/json', 'server': 'BaseHTTP/0.3 Python/2.6.6'}

Body: {"message": "Update context has not been sent yet"}

Log commplete

time=2015-01-28T14:11:22.612Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=incoming request {"method":"POST","url":"/rules","headers":{"host":"10.95.169.246:9090","content-length":"362","accept-encoding":"gzip, deflate","fiware-service":"unknownT","fiware-servicepath":"/","accept":"application/json","user-agent":"python-requests/2.4.3 CPython/2.7.6 Windows/7","connection":"keep-alive","content-type":"application/json"},"body":{"action":{"type":"update","parameters":{"type":"message","name":"ALARM","value":"warning"}},"text":"select *,\"update_name\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"room\")]","name":"update_name"}}
time=2015-01-28T14:11:22.620Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=making post to http://localhost:8080/perseo-core/rules
time=2015-01-28T14:11:22.635Z | lvl=DEBUG | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=post to http://localhost:8080/perseo-core/rules returns {"code":200,"body":{"text":"create context ctxt$unknownt$ partition by tenant from iotEvent(tenant=\"unknownt\" and service=\"/\")","timeLastStateChange":1422454282609,"name":"ctxt$unknownt$","state":"STARTED"}}
time=2015-01-28T14:11:22.636Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=done post to http://localhost:8080/perseo-core/rules
time=2015-01-28T14:11:22.636Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=making post to http://localhost:8080/perseo-core/rules
time=2015-01-28T14:11:22.649Z | lvl=DEBUG | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=post to http://localhost:8080/perseo-core/rules returns {"code":200,"body":{"text":"context ctxt$unknownt$ select *,\"update_name\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"room\")]","timeLastStateChange":1422454282609,"name":"update_name@unknownt/","state":"STARTED"}}
time=2015-01-28T14:11:22.651Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=done post to http://localhost:8080/perseo-core/rules
time=2015-01-28T14:11:22.652Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=making post to http://demo-dca-be-01:8080/perseo-core/rules
time=2015-01-28T14:11:22.687Z | lvl=DEBUG | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=post to http://demo-dca-be-01:8080/perseo-core/rules returns {"code":200,"body":{"text":"create context ctxt$unknownt$ partition by tenant from iotEvent(tenant=\"unknownt\" and service=\"/\")","timeLastStateChange":1422454282649,"name":"ctxt$unknownt$","state":"STARTED"}}
time=2015-01-28T14:11:22.687Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=done post to http://demo-dca-be-01:8080/perseo-core/rules
time=2015-01-28T14:11:22.687Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=making post to http://demo-dca-be-01:8080/perseo-core/rules
time=2015-01-28T14:11:22.724Z | lvl=DEBUG | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=post to http://demo-dca-be-01:8080/perseo-core/rules returns {"code":200,"body":{"text":"context ctxt$unknownt$ select *,\"update_name\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"room\")]","timeLastStateChange":1422454282649,"name":"update_name@unknownt/","state":"STARTED"}}
time=2015-01-28T14:11:22.725Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=done post to http://demo-dca-be-01:8080/perseo-core/rules
time=2015-01-28T14:11:22.731Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=rulesStore.Save "{\"action\":{\"type\":\"update\",\"parameters\":{\"type\":\"message\",\"name\":\"ALARM\",\"value\":\"warning\"}},\"text\":\"select *,\\\"update_name\\\" [...]"
time=2015-01-28T14:11:22.732Z | lvl=INFO | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=sending response: 200 {"error":null,"data":[false,[{"code":200,"body":{"text":"create context ctxt$unknownt$ partition by tenant from iotEvent(tenant=\"unknownt\" and service=\"/\")","timeLastStateChange":1422454282609,"name":"ctxt$unknownt$","state":"STARTED"}},{"code":200,"body":{"text":"context ctxt$unknownt$ select *,\"update_name\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"room\")]","timeLastStateChange":1422454282609,"name":"update_name@unknownt/","state":"STARTED"}},null],{"action":{"type":"update","parameters":{"type":"message","name":"ALARM","value":"warning"}},"text":"select *,\"update_name\" as ruleName, \"/\" as service, \"unknownT\" as tenant, *, ev.attrName_0? as attrName_0_var, ev.id? as Meter from pattern [every ev=iotEvent(cast(cast(attrName_0?,String),float)>1.5 and type=\"room\")]","name":"update_name","service":"/","tenant":"unknownt","_id":"54c8ee0a3a7608293a945da0"},null]}
time=2015-01-28T14:11:22.735Z | lvl=DEBUG | corr=367b2409-cb6a-4665-9c04-25abe1fd1f5c | trans=367b2409-cb6a-4665-9c04-25abe1fd1f5c | op=/rules | msg=response-time: 123 statusCode: 200
time=2015-01-28T14:11:22.844Z | lvl=INFO | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=c62333c5-476d-4d57-8f30-e21148cbf714 | op=/notices | msg=incoming request {"method":"POST","url":"/notices","headers":{"host":"10.95.169.246:9090","content-length":"374","accept-encoding":"gzip, deflate","fiware-service":"unknownT","fiware-servicepath":"/","accept":"application/json","user-agent":"orion/0.10.0","connection":"keep-alive","content-type":"application/json"},"body":{"originator":"localhost","subscriptionId":"51c0ac9ed714fb3b37d7d5a8","contextResponses":[{"contextElement":{"attributes":[{"type":"celcius","name":"attrName_0","value":"300","metadatas":[{"type":"type_Kwqq","name":"name_oEox","value":"ps5e"}]}],"type":"room","id":"room2","isPattern":"false"},"statusCode":{"code":"200","reasonPhrase":"OK"}}]}}
time=2015-01-28T14:11:22.845Z | lvl=INFO | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=c62333c5-476d-4d57-8f30-e21148cbf714 | op=/notices | msg=making post to http://localhost:8080/perseo-core/events
time=2015-01-28T14:11:22.848Z | lvl=INFO | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=c62333c5-476d-4d57-8f30-e21148cbf714 | op=/notices | msg=making post to http://demo-dca-be-01:8080/perseo-core/events
time=2015-01-28T14:11:22.865Z | lvl=INFO | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=cf85f9d0-92aa-401a-b3e0-bfaa1621fc9c | op=/actions/do | msg=incoming request {"method":"POST","url":"/actions/do","headers":{"content-type":"application/json; charset=utf-8","unica-correlator":"c62333c5-476d-4d57-8f30-e21148cbf714","cache-control":"no-cache","pragma":"no-cache","user-agent":"Java/1.7.0_67","host":"127.0.0.1:9090","accept":"text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2","connection":"keep-alive","content-length":"285"},"body":{"Meter":"room2","ev":{"attrName_0__type":"celcius","id":"room2","noticeId":"89e310d0-a6f7-11e4-a8ba-07c85e3a4cb6","tenant":"unknownt","service":"/","attrName_0":"300","type":"room","isPattern":"false"},"attrName_0_var":"300","tenant":"unknownT","ruleName":"update_name","service":"/"}}
time=2015-01-28T14:11:22.866Z | lvl=INFO | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=cf85f9d0-92aa-401a-b3e0-bfaa1621fc9c | op=/actions/do | msg=missing service header
time=2015-01-28T14:11:22.866Z | lvl=INFO | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=cf85f9d0-92aa-401a-b3e0-bfaa1621fc9c | op=/actions/do | msg=missing tenant header
time=2015-01-28T14:11:22.870Z | lvl=DEBUG | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=cf85f9d0-92aa-401a-b3e0-bfaa1621fc9c | op=/actions/do | msg=response-time: 5 statusCode: 200
time=2015-01-28T14:11:22.871Z | lvl=DEBUG | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=cf85f9d0-92aa-401a-b3e0-bfaa1621fc9c | op=/actions/do | msg=tenant unknownt, service /, event {"Meter":"room2","ev__attrName_0__type":"celcius","ev__id":"room2","ev__noticeId":"89e310d0-a6f7-11e4-a8ba-07c85e3a4cb6","ev__tenant":"unknownt","ev__service":"/","ev__attrName_0":"300","ev__type":"room","ev__isPattern":"false","attrName_0_var":"300","tenant":"unknownt","ruleName":"update_name","service":"/","id":"room2"}
time=2015-01-28T14:11:22.876Z | lvl=DEBUG | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=c62333c5-476d-4d57-8f30-e21148cbf714 | op=/notices | msg=post to http://localhost:8080/perseo-core/events returns {"code":200}
time=2015-01-28T14:11:22.878Z | lvl=INFO | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=c62333c5-476d-4d57-8f30-e21148cbf714 | op=/notices | msg=done post to http://localhost:8080/perseo-core/events
time=2015-01-28T14:11:22.878Z | lvl=INFO | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=c62333c5-476d-4d57-8f30-e21148cbf714 | op=/notices | msg=sending response: 200 {"error":null,"data":{"code":200}}
time=2015-01-28T14:11:22.881Z | lvl=DEBUG | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=c62333c5-476d-4d57-8f30-e21148cbf714 | op=/notices | msg=response-time: 37 statusCode: 200
time=2015-01-28T14:11:22.897Z | lvl=ERROR | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=cf85f9d0-92aa-401a-b3e0-bfaa1621fc9c | op=/actions/do | msg=TypeError: Cannot read property '0' of undefined
time=2015-01-28T14:11:22.897Z | lvl=DEBUG | corr=c62333c5-476d-4d57-8f30-e21148cbf714 | trans=cf85f9d0-92aa-401a-b3e0-bfaa1621fc9c | op=/actions/do | msg=response-time: 32
time=2015-01-28T14:11:22.935Z | lvl=DEBUG | corr=n/a | trans=n/a | op=n/a | msg=post to http://demo-dca-be-01:8080/perseo-core/events returns {"code":200}
time=2015-01-28T14:11:22.935Z | lvl=INFO | corr=n/a | trans=n/a | op=n/a | msg=done post to http://demo-dca-be-01:8080/perseo-core/events

template as JSON list/object in HTTP Post action

Current Perseo FE assumes that the template on a HTTP Post action is always a string:

 "action": {
        "type": "post",
        "template": "Meter ${Meter} has pression ${Pression}.",
        "parameters": {
            "url": "localhost:1111"
        }
    }

However, it could be interesting to generize and allow also template as JSON list and JSON object. The variable expansion for ${...} should be done in any subelement of this JSON.

[BUG] - When the notices next core is not configured, an error is raised

If the Notices next core paremeter is not configure in the config.js file an exception is raised:

time=2015-04-13T08:39:15.494Z | lvl=DEBUG | corr=3adad676-a17d-46a9-817d-de076623e75a | trans=3adad676-a17d-46a9-817d-de076623e75a | op=/notices | msg=response-time: 13 statusCode: 500
TypeError: Cannot read property 'noticesURL' of undefined
    at Object.DoNotice [as Do] (/perseo-fe/lib/models/notices.js:90:24)
    at PostNotice (/perseo-fe/lib/routes/noticesController.js:35:13)
    at Layer.handle [as handle_request] (/perseo-fe/node_modules/express/lib/router/layer.js:82:5)
    at next (/perseo-fe/node_modules/express/lib/router/route.js:100:13)
    at Route.dispatch (/perseo-fe/node_modules/express/lib/router/route.js:81:3)
    at Layer.handle [as handle_request] (/perseo-fe/node_modules/express/lib/router/layer.js:82:5)
    at /perseo-fe/node_modules/express/lib/router/index.js:235:24
    at Function.proto.process_params (/perseo-fe/node_modules/express/lib/router/index.js:313:12)
    at /perseo-fe/node_modules/express/lib/router/index.js:229:12
    at Function.match_layer (/perseo-fe/node_modules/express/lib/router/index.js:296:3)
time=2015-04-13T08:39:15.516Z | lvl=DEBUG | corr=n/a | trans=n/a | op=n/a | msg=post to http://localhost:8080/perseo-core/events returns {"code":200}
time=2015-04-13T08:39:15.518Z | lvl=INFO | corr=n/a | trans=n/a | op=n/a | msg=done post to http://localhost:8080/perseo-core/events
time=2015-04-13T08:39:15.520Z | lvl=INFO | corr=n/a | trans=n/a | op=n/a | msg=sending response: 200 {"error":null,"data":{"code":200}}

Error: Can't set headers after they are sent.
    at ServerResponse.OutgoingMessage.setHeader (http.js:689:11)
    at ServerResponse.header (/perseo-fe/node_modules/express/lib/response.js:666:10)
    at ServerResponse.send (/perseo-fe/node_modules/express/lib/response.js:146:12)
    at ServerResponse.jsonp (/perseo-fe/node_modules/express/lib/response.js:303:15)
    at Object.respond (/perseo-fe/lib/myutils.js:115:10)
    at /perseo-fe/lib/routes/noticesController.js:36:17
    at Request.cbRequest2core [as _callback] (/perseo-fe/lib/myutils.js:95:16)
    at Request.self.callback (/perseo-fe/node_modules/request/request.js:373:22)
    at Request.emit (events.js:98:17)
    at Request.<anonymous> (/perseo-fe/node_modules/request/request.js:1318:14)

error writing in log (no space left on device)

log message:

fs.js:539
  return binding.write(fd, buffer, offset, length, position);
                 ^
Error: ENOSPC, no space left on device
    at Object.fs.writeSync (fs.js:539:18)
    at SyncWriteStream.write (fs.js:1751:6)
    at logWrap (/opt/perseo/node_modules/fiware-node-logger/lib/fiware-node-logger.js:150:14)
    at process.<anonymous> (/opt/perseo/bin/perseo:10:12)
    at process.emit (events.js:95:17)
    at process._fatalException (node.js:272:26)

df -h

/dev/mapper/vg0-lv_var_log        504M  469M   11M  98% /var/log

validation of service (tenant) and service path in header

@iariasleon issue:

When create a epl rule (POST /rules), we recommend validate these headers

Info in Context Broker:

https://forge.fi-ware.org/plugins/mediawiki/wiki/fiware/index.php/Publish/Subscribe_Broker_-_Orion_Context_Broker_-_User_and_Programmers_Guide#Multi_service_tenancy
https://forge.fi-ware.org/plugins/mediawiki/wiki/fiware/index.php/Publish/Subscribe_Broker_-_Orion_Context_Broker_-_User_and_Programmers_Guide#Entity_service_paths

Effort: 2 man day

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.