node_types for CDN service
diff --git a/xos/tosca/custom_types/cdn.m4 b/xos/tosca/custom_types/cdn.m4
new file mode 100644
index 0000000..59d4ee6
--- /dev/null
+++ b/xos/tosca/custom_types/cdn.m4
@@ -0,0 +1,60 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+# Note: Tosca derived_from isn't working the way I think it should, it's not
+#    inheriting from the parent template. Until we get that figured out, use
+#    m4 macros do our inheritance
+
+node_types:
+    tosca.nodes.ServiceProvider:
+        derived_from: tosca.nodes.Root
+
+        capabilities:
+            user:
+                type: tosca.capabilities.xos.ServiceProvider
+
+    tosca.nodes.ContentProvider:
+        derived_from: tosca.nodes.Root
+
+        capabilities:
+            user:
+                type: tosca.capabilities.xos.ContentProvider
+
+    tosca.nodes.OriginServer:
+        derived_from: tosca.nodes.Root
+
+        capabilities:
+            user:
+                type: tosca.capabilities.xos.OriginServer
+
+    tosca.nodes.CDNPrefix:
+        derived_from: tosca.nodes.Root
+
+        capabilities:
+            user:
+                type: tosca.capabilities.xos.CDNPrefix
+
+    tosca.relationships.MemberOfServiceProvider:
+        derived_from: tosca.relationships.Root
+        valid_target_types: [ tosca.capabilities.xos.ServiceProvider ]
+
+    tosca.relationships.MemberOfContentProvider:
+        derived_from: tosca.relationships.Root
+        valid_target_types: [ tosca.capabilities.xos.ContentProvider ]
+
+    tosca.relationships.DefaultOriginServer:
+        derived_from: tosca.relationships.Root
+        valid_target_types: [ tosca.capabilities.xos.OriginServer ]
+
+    tosca.capabilities.xos.ServiceProvider:
+        derived_from: tosca.capabilities.Root
+
+    tosca.capabilities.xos.ContentProvider:
+        derived_from: tosca.capabilities.Root
+
+    tosca.capabilities.xos.CDNPrefix:
+        derived_from: tosca.capabilities.Root
+
+    tosca.capabilities.xos.OriginServer:
+        derived_from: tosca.capabilities.Root
+
+
diff --git a/xos/tosca/custom_types/cdn.yaml b/xos/tosca/custom_types/cdn.yaml
new file mode 100644
index 0000000..59d4ee6
--- /dev/null
+++ b/xos/tosca/custom_types/cdn.yaml
@@ -0,0 +1,60 @@
+tosca_definitions_version: tosca_simple_yaml_1_0
+
+# Note: Tosca derived_from isn't working the way I think it should, it's not
+#    inheriting from the parent template. Until we get that figured out, use
+#    m4 macros do our inheritance
+
+node_types:
+    tosca.nodes.ServiceProvider:
+        derived_from: tosca.nodes.Root
+
+        capabilities:
+            user:
+                type: tosca.capabilities.xos.ServiceProvider
+
+    tosca.nodes.ContentProvider:
+        derived_from: tosca.nodes.Root
+
+        capabilities:
+            user:
+                type: tosca.capabilities.xos.ContentProvider
+
+    tosca.nodes.OriginServer:
+        derived_from: tosca.nodes.Root
+
+        capabilities:
+            user:
+                type: tosca.capabilities.xos.OriginServer
+
+    tosca.nodes.CDNPrefix:
+        derived_from: tosca.nodes.Root
+
+        capabilities:
+            user:
+                type: tosca.capabilities.xos.CDNPrefix
+
+    tosca.relationships.MemberOfServiceProvider:
+        derived_from: tosca.relationships.Root
+        valid_target_types: [ tosca.capabilities.xos.ServiceProvider ]
+
+    tosca.relationships.MemberOfContentProvider:
+        derived_from: tosca.relationships.Root
+        valid_target_types: [ tosca.capabilities.xos.ContentProvider ]
+
+    tosca.relationships.DefaultOriginServer:
+        derived_from: tosca.relationships.Root
+        valid_target_types: [ tosca.capabilities.xos.OriginServer ]
+
+    tosca.capabilities.xos.ServiceProvider:
+        derived_from: tosca.capabilities.Root
+
+    tosca.capabilities.xos.ContentProvider:
+        derived_from: tosca.capabilities.Root
+
+    tosca.capabilities.xos.CDNPrefix:
+        derived_from: tosca.capabilities.Root
+
+    tosca.capabilities.xos.OriginServer:
+        derived_from: tosca.capabilities.Root
+
+