浏览代码

synapse name must be unique and with a syntax usable in URL.

nico 8 年之前
父节点
当前提交
7966a23746

+ 1 - 1
brains/ansible_playbook.yml

@@ -1,6 +1,6 @@
 ---
 
-  - name: "Ansible test"
+  - name: "ansible-test"
     neurons:
       - ansible_playbook: "tasks.yml"
       - say:

+ 1 - 1
brains/gmail_checker.yml

@@ -1,6 +1,6 @@
 ---
 
-  - name: "check email"
+  - name: "check-email"
     neurons:
       - gmail_checker:
           username: "me@gmail.com"

+ 1 - 1
brains/kill_switch.yml

@@ -1,6 +1,6 @@
 ---
 
-  - name: "Stop kalliope"
+  - name: "stop-kalliope"
     neurons:
       - say:
           message: "Aurevoir"

+ 1 - 1
brains/openweathermap.yml

@@ -1,5 +1,5 @@
 ---
-  - name: "get the weather"
+  - name: "get-the-weather"
     neurons:
       - openweathermap:
           api_key: "your-api"

+ 1 - 1
brains/push_message.yml

@@ -1,5 +1,5 @@
 ---
-  - name: "Send push message"
+  - name: "send-push-message"
     neurons:
       - push_message:
            message: "Message to send"

+ 1 - 1
brains/say.yml

@@ -1,5 +1,5 @@
 ---
-  - name: "say hello"
+  - name: "say-hello"
     neurons:
       - say:
           message:

+ 1 - 1
brains/script.yml

@@ -1,5 +1,5 @@
 ---
-  - name: "Run a simple script"
+  - name: "run-simple-script"
     neurons:
       - script:
           path: "/home/nico/test.sh"

+ 6 - 6
brains/shell.yml

@@ -1,6 +1,6 @@
 ---
 
-  - name: "Close rolling shutter"
+  - name: "close-rolling-shutter"
     neurons:
       - shell:
           cmd: "curl http://192.168.0.22:5000/fermeture -d \"password=monpass\" -X POST"
@@ -9,7 +9,7 @@
     signals:
       - order: "ferme les volets"
 
-  - name: "Open rolling shutter"
+  - name: "open-rolling-shutter"
     neurons:
       - shell:
           cmd: "curl http://192.168.0.22:5000/ouverture -d \"password=monpass\" -X POST"
@@ -19,7 +19,7 @@
       - order: "ouvre les volets"
 
 
-  - name: "Start steam"
+  - name: "start-steam"
     neurons:
       - shell:
           cmd: "curl -i --user admin:secret -H \"Content-Type: application/json\" -X POST -d '{\"app_name\":\"kodi\",\"state\":\"stop\"}' http://192.168.0.17:8000/app"
@@ -30,7 +30,7 @@
     signals:
       - order: "lance Steam"
 
-  - name: "Start Kodi"
+  - name: "start-Kodi"
     neurons:
       - shell:
           cmd: "curl -i --user admin:secret -H \"Content-Type: application/json\" -X POST -d '{\"app_name\":\"steam\",\"state\":\"stop\"}' http://192.168.0.17:8000/app"
@@ -41,7 +41,7 @@
     signals:
       - order: "lance Cody"
 
-  - name: "Start music"
+  - name: "start-music"
     neurons:
       - shell:
           cmd: "curl -i --user admin:secret -H \"Content-Type: application/json\" -X POST -d '{\"app_name\":\"music\",\"state\":\"start\"}' http://192.168.0.17:8000/app"
@@ -51,7 +51,7 @@
       - order: "mais nous de la musique"
       - order: "musique rock"
 
-  - name: "Stop music"
+  - name: "stop-music"
     neurons:
       - shell:
           cmd: "curl -i --user admin:secret -H \"Content-Type: application/json\" -X POST -d '{\"app_name\":\"music\",\"state\":\"stop\"}' http://192.168.0.17:8000/app"

+ 2 - 2
brains/systemdate.yml

@@ -1,6 +1,6 @@
 ---
 
-  - name: "Say local date"
+  - name: "say-local-date"
     neurons:
       - systemdate:
           tts: "voxygen"
@@ -9,7 +9,7 @@
     signals:
       - order: "quelle heure est-il"
 
-  - name: "Say local date from template"
+  - name: "say-local-date-from-template"
     neurons:
       - systemdate:
           file_template: en_systemdate_template_example.j2

+ 1 - 1
brains/tasker_autoremote.yml

@@ -1,6 +1,6 @@
 ---
 
-  - name: "find my phone"
+  - name: "find-my-phone"
     neurons:
       - say:
           message: "Je fais sonner le téléphone, monsieur"

+ 1 - 1
brains/wake_on_lan.yml

@@ -1,6 +1,6 @@
 ---
 
-  - name: "wake my PC"
+  - name: "wake-my-PC"
     neurons:
       - wake_on_lan:
           mac_address: "00-00-00-00-00-00"

+ 13 - 3
core/ConfigurationManager/ConfigurationChecker.py

@@ -1,6 +1,10 @@
 import re
 
 
+class InvalidSynapeName(Exception):
+    pass
+
+
 class NoSynapeName(Exception):
     pass
 
@@ -44,6 +48,15 @@ class ConfigurationChecker:
         if 'name' not in synape_dict:
             raise NoSynapeName("The Synapse does not have a name: %s" % synape_dict)
 
+        # check that the name is conform
+        # Regex for [a - zA - Z0 - 9\-] with dashes allowed in between but not at the start or end
+        pattern = r'(?=[a-zA-Z0-9\-]{4,25}$)^[a-zA-Z0-9]+(\-[a-zA-Z0-9]+)*$'
+        prog = re.compile(pattern)
+        result = prog.match(synape_dict["name"])
+        if result is None:
+            raise InvalidSynapeName("Error with synapse name \"%s\".Valid syntax: [a - zA - Z0 - 9\-] with dashes "
+                                    "allowed in between but not at the start or end" % synape_dict["name"])
+
         if 'neurons' not in synape_dict:
             raise NoSynapeNeurons("The Synapse does not have neurons: %s" % synape_dict)
 
@@ -81,7 +94,6 @@ class ConfigurationChecker:
         """
         Check the synapse list is ok:
          - No double same name
-         - No accent of special character
         :param synapses_list:
         :type synapses_list: list of Synapse
         :return:
@@ -93,7 +105,5 @@ class ConfigurationChecker:
             if synapse_name in seen:
                 raise MultipleSameSynapseName("Multiple synapse found with the same name: %s" % synapse_name)
             seen.add(synapse.name)
-            if not re.match("^[a-zA-Z0-9_\s]*$", synapse.name):
-                raise NotValidSynapseName("Synapse's name %s not valid." % synapse_name)
 
         return True

+ 3 - 3
test.py

@@ -24,9 +24,9 @@ logger.setLevel(logging.DEBUG)
 
 brain = BrainLoader.get_brain()
 
-app = Flask(__name__)
-flask_api = FlaskAPI(app, brain)
-flask_api.start()
+# app = Flask(__name__)
+# flask_api = FlaskAPI(app, brain)
+# flask_api.start()