Initial prototype of synchronizer

Change-Id: I45de04debd89e7007d7985728d51aa5d03178675
diff --git a/xos/synchronizer/templates/slice.yaml.j2 b/xos/synchronizer/templates/slice.yaml.j2
new file mode 100644
index 0000000..6f22b48
--- /dev/null
+++ b/xos/synchronizer/templates/slice.yaml.j2
@@ -0,0 +1,48 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Setup a generic slice on the pod
+
+imports:
+   - custom_types/xos.yaml
+
+topology_template:
+  node_templates:
+
+    management:
+      type: tosca.nodes.network.Network.XOS
+      properties:
+          no-create: true
+          no-delete: true
+          no-update: true
+
+    public:
+      type: tosca.nodes.network.Network.XOS
+      properties:
+          no-create: true
+          no-delete: true
+          no-update: true
+
+    {{ local_site }}:
+      type: tosca.nodes.Site
+
+    {{ image }}:
+      type: tosca.nodes.Image
+
+    {{ local_site }}_{{ slice_name }}:
+      description: {{ slice_description }}
+      type: tosca.nodes.Slice
+      properties:
+          network: noauto
+      requirements:
+          - site:
+              node: {{ local_site }}
+              relationship: tosca.relationships.MemberOfSite
+          - management:
+              node: management
+              relationship: tosca.relationships.ConnectsToNetwork
+          - public:
+              node: public
+              relationship: tosca.relationships.ConnectsToNetwork
+          - image:
+              node: {{ image }}
+              relationship: tosca.relationships.DefaultImage
diff --git a/xos/synchronizer/templates/slice_privileges.yaml.j2 b/xos/synchronizer/templates/slice_privileges.yaml.j2
new file mode 100644
index 0000000..ac3a573
--- /dev/null
+++ b/xos/synchronizer/templates/slice_privileges.yaml.j2
@@ -0,0 +1,29 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Setup a slice privilege on the pod
+{% set relationship = {"admin": "tosca.relationships.AdminPrivilege", "access": "tosca.relationships.AccessPrivilege"}[role] | default("ERROR") -%}
+
+imports:
+   - custom_types/xos.yaml
+
+topology_template:
+  node_templates:
+
+    {{ local_site }}:
+      type: tosca.nodes.Site
+
+    {{ user_name }}:
+      type: tosca.nodes.User
+
+    {{ local_site }}_{{ slice_name }}:
+      type: tosca.nodes.Slice
+      properties:
+          no-create: true
+          no-delete: true
+      requirements:
+          - privilege:
+              node: {{ user_name }}
+              relationship: {{ relationship }}
+          - site:
+              node: {{ local_site }}
+              relationship: tosca.relationships.MemberOfSite
diff --git a/xos/synchronizer/templates/user.yaml.j2 b/xos/synchronizer/templates/user.yaml.j2
new file mode 100644
index 0000000..956051d
--- /dev/null
+++ b/xos/synchronizer/templates/user.yaml.j2
@@ -0,0 +1,29 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+description: Add a user
+
+imports:
+   - custom_types/xos.yaml
+
+topology_template:
+  node_templates:
+    {{ local_site }}:
+      type: tosca.nodes.Site
+
+    {{ name }}:
+      type: tosca.nodes.User
+      properties:
+          password: "{{ password }}"
+          firstname: "{{ firstname }}"
+          lastname: "{{ lastname }}"
+          phone: "{{ phone }}"
+          user_url: "{{ user_url }}"
+          public_key: "{{ public_key }}"
+          is_active: "{{ is_active }}"
+          is_admin: "{{ is_admin }}"
+          is_readonly: "{{ is_readonly }}"
+          is_appuser: "{{ is_appuser }}"
+      requirements:
+          - site:
+              node: {{ local_site }}
+              relationship: tosca.relationships.MemberOfSite