[CORD-2453] Removing the old TOSCA engine

Change-Id: I361f607385201c412db61446e44cf9a9e11ce87a
diff --git a/xos/tools/corebuilder/corebuilder.py b/xos/tools/corebuilder/corebuilder.py
index c968175..2e9a617 100644
--- a/xos/tools/corebuilder/corebuilder.py
+++ b/xos/tools/corebuilder/corebuilder.py
@@ -68,7 +68,6 @@
 import traceback
 import urlparse
 from xosgenx.generator import XOSGenerator
-
 from toscaparser.tosca_template import ToscaTemplate
 
 BUILD_DIR = "/opt/xos_corebuilder/BUILD"
@@ -221,6 +220,11 @@
             if (k=="public_key"):
                 continue
 
+            # TOSCA custom types and custom resources have been deprecated by the new engine
+            if (k == "tosca_custom_types" or k == "tosca_resource"):
+                print 'Custom TOSCA definition are not allowed anymore, please remove them from service %s on resource %s and filename %s' % (service_name, k, v)
+                continue
+
             # If the ServiceController has models, then add it to the list of
             # django apps.
             if (k in ["models","xproto"] and service_name!="core"):
diff --git a/xos/tosca/README.md b/xos/tosca/README.md
index b0a654a..593269a 100644
--- a/xos/tosca/README.md
+++ b/xos/tosca/README.md
@@ -1,13 +1,2 @@
-## TOSCA Interface Definition
-
-This directory implements a TOSCA interface for XOS,
-which can be extended to include specifications for
-service models added to XOS. The directory is organized
-as follows:
-
- * custom_types -- Defines schema for XOS-specific models.
-   * `.m4` source files
-   * `.yaml` generated files
- * definitions -- Defines schema for TOSCA's base models.
- * resources -- Translates TOSCA to Django API.
- * sample -- Example TOSCA specifications.
+The only definitions defined here are used to onboard services.
+TOSCA defintions for models are autogenerate from xProto.
\ No newline at end of file
diff --git a/xos/tosca/all_samples.sh b/xos/tosca/all_samples.sh
deleted file mode 100755
index 3c1b2c4..0000000
--- a/xos/tosca/all_samples.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# cleanup phase
-for f in samples/*.yaml; do
-   echo --------------------------------------------------
-   echo destroy $f
-   python ./destroy.py scott@onlab.us $f
-done
-
-for f in samples/*.yaml; do
-   echo --------------------------------------------------
-   echo run $f
-   python ./run.py scott@onlab.us $f
-   echo destroy $f
-   python ./destroy.py scott@onlab.us $f
-done
diff --git a/xos/tosca/custom_types/cdn.m4 b/xos/tosca/custom_types/cdn.m4
deleted file mode 100644
index 1ad6970..0000000
--- a/xos/tosca/custom_types/cdn.m4
+++ /dev/null
@@ -1,99 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-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.nodes.HpcHealthCheck:
-        derived_from: tosca.nodes.Root
-
-        properties:
-            kind:
-                type: string
-                required: true
-                description: dns | http | nameserver
-            resource_name:
-                type: string
-                required: true
-                description: name of resource to query
-            result_contains:
-                type: string
-                required: false
-                description: soemthing to look for inside the result
-        capabilities:
-            healthcheck:
-                type: tosca.capabilities.xos.HpcHealthCheck
-
-    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
-
-    tosca.capabilities.xos.HpcHealthCheck:
-        derived_from: tosca.capabilities.Root
-
-
diff --git a/xos/tosca/custom_types/cdn.yaml b/xos/tosca/custom_types/cdn.yaml
deleted file mode 100644
index 1ad6970..0000000
--- a/xos/tosca/custom_types/cdn.yaml
+++ /dev/null
@@ -1,99 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-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.nodes.HpcHealthCheck:
-        derived_from: tosca.nodes.Root
-
-        properties:
-            kind:
-                type: string
-                required: true
-                description: dns | http | nameserver
-            resource_name:
-                type: string
-                required: true
-                description: name of resource to query
-            result_contains:
-                type: string
-                required: false
-                description: soemthing to look for inside the result
-        capabilities:
-            healthcheck:
-                type: tosca.capabilities.xos.HpcHealthCheck
-
-    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
-
-    tosca.capabilities.xos.HpcHealthCheck:
-        derived_from: tosca.capabilities.Root
-
-
diff --git a/xos/tosca/custom_types/macros.m4 b/xos/tosca/custom_types/macros.m4
deleted file mode 100644
index 391aafd..0000000
--- a/xos/tosca/custom_types/macros.m4
+++ /dev/null
@@ -1,100 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# 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
-
-define(xos_base_props,
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object)
-# Service
-define(xos_base_service_caps,
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service)
-define(xos_base_service_props,
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.)
-# Subscriber
-define(xos_base_subscriber_caps,
-            subscriber:
-                type: tosca.capabilities.xos.Subscriber)
-define(xos_base_subscriber_props,
-            kind:
-                type: string
-                default: generic
-                description: Kind of subscriber
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service)
-define(xos_base_tenant_props,
-            kind:
-                type: string
-                default: generic
-                description: Kind of tenant
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service)
-
-# end m4 macros
-
diff --git a/xos/tosca/custom_types/xos.m4 b/xos/tosca/custom_types/xos.m4
deleted file mode 100644
index 3c8f581..0000000
--- a/xos/tosca/custom_types/xos.m4
+++ /dev/null
@@ -1,1595 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-# compile this with "m4 xos.m4 > xos.yaml"
-
-# include macros
-include(macros.m4)
-
-node_types:
-    tosca.nodes.XOS:
-        derived_from: tosca.nodes.Root
-        description: The root of XOS
-        properties:
-            xos_base_props
-            ui_port:
-                type: integer
-                required: false
-                description: TCP port of user interface
-            bootstrap_ui_port:
-                type: integer
-                required: false
-                descrption: TCP port of bootstrap user interface
-            docker_project_name:
-                type: string
-                required: false
-                description: Docker project name
-            db_container_name:
-                type: string
-                required: false
-                description: Database container name
-            redis_container_name:
-                type: string
-                required: false
-                description: redis container name
-            source_ui_image:
-                type: string
-                required: false
-                description: Source UI docker image name
-            dest_ui_image:
-                type: string
-                required: false
-                description: Dest UI docker image name
-            cert_chain_name:
-                type: string
-                required: false
-                description: Name of file that holds certificate chain
-            enable_build:
-                type: boolean
-                required: false
-                description: True if XOS build should be enabled
-            frontend_only:
-                type: boolean
-                required: false
-                description: True if XOS should not start synchronizer containers
-            extra_hosts:
-                type: string
-                required: false
-                description: List of extra_hosts to pass to docker compose
-            no_start:
-                type: boolean
-                required: false
-                description: Whether to start the Django server or not
-            no_build:
-                type: boolean
-                required: false
-                description: Whether to build the core UI image
-
-    tosca.nodes.XOSVolume:
-        derived_from: tosca.nodes.Root
-        description: A volume that should be attached to the XOS docker container
-        properties:
-            xos_base_props
-            host_path:
-                type: string
-                required: false
-                description: path of resource on host
-            read_only:
-                type: boolean
-                required: false
-                description: True if mount read only
-
-    tosca.nodes.XOSGuiExtension:
-        derived_from: tosca.nodes.Root
-        description: A GUI Extension that can be loaded at runtime and need to be persisted
-        properties:
-            xos_base_props
-            files:
-                type: string
-                required: false
-                description: List of comma separated file composing the view
-
-    tosca.nodes.Service:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Service object. Services may be listed in the Service
-            directory and may be linked together via Tenancy Relationships.
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-
-    tosca.nodes.InterfaceType:
-        derived_from: tosca.nodes.Root
-        description: >
-            An interface type.
-        properties:
-            xos_base_props
-            direction:
-                type: string
-                required: false
-                description: Direction of interface
-
-    tosca.nodes.ServiceInterface:
-        derived_from: tosca.nodes.Root
-        description: >
-            An interface for the service.
-        properties:
-            xos_base_props
-
-    tosca.nodes.ServiceController:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Service Controller.
-        properties:
-            xos_base_props
-            base_url:
-                type: string
-                required: false
-                description: Base url, to allow resources to use relative URLs
-            version:
-                type: string
-                required: false
-                description: Version number of this Service Controller
-            provides:
-                type: string
-                required: false
-                description: Comma-separated list of things provided
-            requires:
-                type: string
-                required: false
-                description: Comma-separated list of requirements
-            xproto:
-                type: string
-                required: false
-                description: url of xproto
-            models:
-                type: string
-                required: false
-                description: url of models.py
-            admin:
-                type: string
-                required: false
-                description: url of admin.py
-            django_library:
-                type: string
-                required: false
-                description: libraries used by admin or models
-            admin_template:
-                type: string
-                required: false
-                description: url of admin html template
-            synchronizer:
-                type: string
-                required: false
-                description: url of synchronizer manifest
-            synchronizer_run:
-                type: string
-                required: false
-                description: synchronizer run command
-            synchronizer_config:
-                type: string
-                required: false
-                description: synchronizer config filename
-            tosca_custom_types:
-                type: string
-                required: false
-                description: url of tosca custom_types
-            tosca_resource:
-                type: string
-                required: false
-                description: url of tosca resource
-            rest_service:
-                type: string
-                required: false
-                description: url of REST API service file
-            rest_tenant:
-                type: string
-                required: false
-                description: url of REST API tenant file
-            private_key:
-                type: string
-                required: false
-                description: private key
-            public_key:
-                type: string
-                required: false
-                description: public key
-            vendor_js:
-                type: string
-                required: false
-                description: third-party javascript files
-            image:
-                type: string
-                required: false
-                description: Image name for refactored synchronizer containers
-            no_build:
-                type: boolean
-                required: false
-                description: If true then refactored synchronizer container image is assumed
-            no_deploy:
-                type: boolean
-                required: false
-                description: If true then synchronizer container will not be added to docker-compose
-
-    tosca.nodes.ServiceControllerResource:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Service Resource.
-        properties:
-            xos_base_props
-            kind:
-                type: string
-                required: false
-                description: models, admin, django_library, synchronizer, rest, tosca_custom_types, or tosca_resource
-            format:
-                type: string
-                required: false
-                description: python, manifest, or docker
-            url:
-                type: string
-                required: false
-                description: url of resource, may be relative to base_url or absolute
-
-    tosca.nodes.Library:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Library.
-        properties:
-            xos_base_props
-            base_url:
-                type: string
-                required: false
-                description: Base url, to allow resources to use relative URLs
-            version:
-                type: string
-                required: false
-                description: Version number of this Service Controller
-            provides:
-                type: string
-                required: false
-                description: Comma-separated list of things provided
-            requires:
-                type: string
-                required: false
-                description: Comma-separated list of requirements
-            models:
-                type: string
-                required: false
-                description: url of models.py
-            admin:
-                type: string
-                required: false
-                description: url of admin.py
-            django_library:
-                type: string
-                required: false
-                description: libraries used by admin or models
-            admin_template:
-                type: string
-                required: false
-                description: url of admin html template
-            tosca_custom_types:
-                type: string
-                required: false
-                description: url of tosca custom_types
-            tosca_resource:
-                type: string
-                required: false
-                description: url of tosca resource
-            rest_service:
-                type: string
-                required: false
-                description: url of REST API service file
-            rest_tenant:
-                type: string
-                required: false
-                description: url of REST API tenant file
-            private_key:
-                type: string
-                required: false
-                description: private key
-            public_key:
-                type: string
-                required: false
-                description: public key
-            vendor_js:
-                type: string
-                required: false
-                description: third-party javascript files
-
-    tosca.nodes.Component:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Component in the form of a docker container.
-        properties:
-            xos_base_props
-            image:
-                type: string
-                required: false
-                description: the base image for the container
-            command:
-                type: string
-                required: false
-                description: the command to execute in the container
-            ports:
-                type: string
-                required: false
-                description: ports that need to be exposed
-            extra:
-                type: string
-                required: false
-                description: ports that need to be exposed
-
-    tosca.nodes.ComponentLink:
-        derived_from: tosca.nodes.Root
-        description: >
-            Links between XOS components.
-        properties:
-            xos_base_props
-            container:
-                type: string
-                required: true
-                description: the container that needs to be linked
-            alias:
-                type: string
-                required: true
-                description: alias for the link
-            kind:
-                type: string
-                required: true
-                description: internal or external link
-                constraints:
-                    - valid_values: [ 'internal', 'external' ]
-
-    tosca.nodes.ComponentVolume:
-        derived_from: tosca.nodes.Root
-        description: >
-            Volumes of the XOS components.
-        properties:
-            xos_base_props
-            host_path:
-                type: string
-                required: false
-                description: path of resource on host
-            read_only:
-                type: boolean
-                required: false
-                description: True if mount read only
-
-    tosca.nodes.ComponentVolumeContainer:
-        derived_from: tosca.nodes.Root
-        description: >
-            Container Volumes used by XOS components.
-        properties:
-            xos_base_props
-            name:
-                type: string
-                required: false
-                description: Identifier of the Container Volume
-            container:
-                type: string
-                required: false
-                description: Name of the Container Volume
-
-    tosca.relationships.LinkOfComponent:
-            derived_from: tosca.relationships.Root
-            valid_target_types: [ tosca.capabilities.xos.ComponentLink ]
-
-    tosca.relationships.VolumeOfComponent:
-            derived_from: tosca.relationships.Root
-            valid_target_types: [ tosca.capabilities.xos.ComponentVolume ]
-
-    tosca.relationships.VolumeContainerOfComponent:
-            derived_from: tosca.relationships.Root
-            valid_target_types: [ tosca.capabilities.xos.ComponentVolumeContainer ]
-
-    tosca.nodes.Tenant:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS Tenant.
-        properties:
-            xos_base_tenant_props
-            service_specific_attribute:
-                type: string
-                required: false
-                description: Service-specific attribute, usually a string containing a json dictionary
-            model:
-                type: string
-                required: false
-                description: Name of model to use when instantiating tenant
-
-    tosca.nodes.ONOSService:
-        derived_from: tosca.nodes.Root
-        description: >
-            ONOS Service
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-            rest_onos/v1/network/configuration/:
-                type: string
-                required: false
-            rest_hostname:
-                type: string
-                required: false
-            rest_port:
-                type: string
-                required: false
-            no_container:
-                type: boolean
-                default: false
-            node_key:
-                type: string
-                required: false
-
-
-    tosca.nodes.ONOSApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS Application.
-        properties:
-            xos_base_tenant_props
-            install_dependencies:
-                type: string
-                required: false
-            dependencies:
-                type: string
-                required: false
-            component_config:
-                type: string
-                required: false
-
-    tosca.nodes.ONOSvBNGApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS vBNG Application.
-        properties:
-            xos_base_tenant_props
-            dependencies:
-                type: string
-                required: false
-            install_dependencies:
-                type: string
-                required: false
-            component_config:
-                type: string
-                required: false
-            config_addresses.json:
-                type: string
-                required: false
-            config_network-cfg.json:
-                type: string
-                required: false
-            config_virtualbng.json:
-                type: string
-                required: false
-
-    tosca.nodes.ONOSvOLTApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS vOLT Application.
-        properties:
-            xos_base_tenant_props
-            dependencies:
-                type: string
-                required: false
-            install_dependencies:
-                type: string
-                required: false
-            component_config:
-                type: string
-                required: false
-            config_network-cfg.json:
-                type: string
-                required: false
-            rest_onos/v1/network/configuration/:
-                type: string
-                required: false
-            autogenerate:
-                type: string
-                required: false
-
-    tosca.nodes.ONOSVTNApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS VTN Application.
-        properties:
-            xos_base_tenant_props
-            dependencies:
-                type: string
-                required: false
-            install_dependencies:
-                type: string
-                required: false
-            rest_onos/v1/network/configuration/:
-                type: string
-                required: false
-            autogenerate:
-                type: string
-                required: false
-
-    tosca.nodes.ONOSvRouterApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS vRouter Application.
-        properties:
-            xos_base_tenant_props
-            dependencies:
-                type: string
-                required: false
-            install_dependencies:
-                type: string
-                required: false
-            rest_onos/v1/network/configuration/:
-                type: string
-                required: false
-            autogenerate:
-                type: string
-                required: false
-
-    tosca.nodes.VSGService:
-        description: >
-            CORD: The vSG Service.
-        derived_from: tosca.nodes.Root
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-            backend_network_label:
-                type: string
-                required: false
-                description: Label that matches network used to connect HPC and BBS services.
-            dns_servers:
-                type: string
-                required: false
-            node_label:
-                type: string
-                required: false
-            docker_image_name:
-                type: string
-                required: false
-                description: Name of docker image to pull for vSG
-            docker_insecure_registry:
-                type: boolean
-                required: false
-                description: If true, then the hostname:port specified in docker_image_name will be treated as an insecure registry
-
-    tosca.nodes.VBNGService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The vBNG Service.
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-            vbng_url:
-                type: string
-                required: false
-                description: URL of REST API endpoint for vBNG Service.
-
-    tosca.nodes.VRouterService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The vRouter Service.
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-
-    tosca.nodes.FabricService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The Fabric Service.
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-
-    tosca.nodes.VTNService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The vRouter Service.
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-            privateGatewayMac:
-                type: string
-                required: false
-            localManagementIp:
-                type: string
-                required: false
-            ovsdbPort:
-                type: string
-                required: false
-            sshPort:
-                type: string
-                required: false
-            sshUser:
-                type: string
-                required: false
-            sshKeyFile:
-                type: string
-                required: false
-            mgmtSubnetBits:
-                type: string
-                required: false
-            xosEndpoint:
-                type: string
-                required: false
-            xosUser:
-                type: string
-                required: false
-            xosPassword:
-                type: string
-                required: false
-            vtnAPIVersion:
-                type: string
-                required: false
-            controllerPort:
-                type: string
-                required: false
-
-
-    tosca.nodes.CDNService:
-        derived_from: tosca.nodes.Root
-        description: >
-            Content Delivery Network Service. Includes Request Routing and Hypercache.
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-
-    tosca.nodes.CORDSubscriber:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: Subscriber. The Subscriber object contains all of the settings
-            for a CORD household. For example, it contains parental control
-            filter settings.
-        capabilities:
-            xos_base_subscriber_caps
-        properties:
-            xos_base_subscriber_props
-            firewall_enable:
-                type: boolean
-                default: false
-                description: If True, then firewalling is enabled.
-            url_filter_enable:
-                type: boolean
-                default: false
-                description: If True, then parental controls are enabled.
-            url_filter_level:
-                type: string
-                default: PG
-                description: The default URL filter level for the household.
-            cdn_enable:
-                type: boolean
-                default: true
-                description: If True, then the CDN is enabled.
-
-    tosca.nodes.CORDUser:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: User. The CORD user represents an individual device beloning
-            to the CORD Subscriber. Each device may have its own parental
-            controls.
-        capabilities:
-            device:
-                type: tosca.capabilities.xos.Device
-        properties:
-            level:
-                type: string
-                default: PG_13
-                description: Parental control level for this device.
-            mac:
-                type: string
-                required: true
-                description: MAC address for this device.
-
-    tosca.nodes.VOLTService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The vOLT Service
-        capabilities:
-            xos_base_service_caps
-        properties:
-            xos_base_props
-            xos_base_service_props
-
-    tosca.nodes.VOLTTenant:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A Tenant of the vOLT Service. Each Tenant is tied to a
-            specific vlan_id.
-        properties:
-            xos_base_tenant_props
-            s_tag:
-                type: string
-                required: false
-                description: s_tag, identifies which volt port
-            c_tag:
-                type: string
-                required: false
-                description: c_tag, identifies which subscriber within s_tag
-
-    tosca.nodes.VOLTDevice:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A vOLT Device.
-        properties:
-            xos_base_props
-            openflow_id:
-                type: string
-                required: false
-                description: openflow id
-            driver:
-                type: string
-                required: false
-                description: driver name
-            access_devices:
-                type: string
-                required: false
-                description: list of access devices, in format "uplink vlan", multiple entries separated by commas
-
-# XXX - uncomment if we want access device to be specified as separate Tosca
-# objects, rather than encoding them into VOLTDevice.access_devices
-#    tosca.nodes.AccessDevice:
-#        derived_from: tosca.nodes.Root
-#        description: >
-#            CORD: A vOLT Access Device.
-#        properties:
-#            xos_base_props
-#            uplink:
-#               type: integer
-#               required: false
-#               description: uplink
-#            vlan:
-#               type: integer
-#               required: false
-#               description: vlan
-
-    tosca.nodes.AccessAgent:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A vOLT Access Agent.
-        properties:
-            xos_base_props
-            mac:
-                type: string
-                required: false
-                description: mac address
-            port_mappings:
-                type: string
-                required: false
-                description: list of port mappings, in format "port mac", multiple entries separated by commas
-
-
-    tosca.nodes.User:
-        derived_from: tosca.nodes.Root
-
-        description: >
-            An XOS User record. Users are able to login and use the XOS GUI.
-
-        capabilities:
-            user:
-                type: tosca.capabilities.xos.User
-
-        properties:
-            xos_base_props
-            password:
-                type: string
-                required: false
-            firstname:
-                type: string
-                required: false
-                description: First name of User.
-            lastname:
-                type: string
-                required: false
-                description: Last name of User.
-            phone:
-                type: string
-                required: false
-                description: Phone number of User.
-            user_url:
-                type: string
-                required: false
-                description: URL to User web page.
-            public_key:
-                type: string
-                required: false
-                description: Public key that will be installed in Instances.
-            is_active:
-                type: boolean
-                required: false
-                #default: true
-                description: If True, the user may log in.
-            is_admin:
-                type: boolean
-                required: false
-                #default: false
-                description: If True, the user has root admin privileges.
-            is_readonly:
-                type: boolean
-                required: false
-                #default: false
-                description: If True, the user has read-only privileges in the UI.
-            is_appuser:
-                type: boolean
-                required: false
-                #default: false
-                description: If True, the user may only login to XOS to use apps.
-            login_page:
-                type: string
-                required: false
-                description: Indicates what page the user should go to on login.
-
-    tosca.nodes.NetworkParameterType:
-        derived_from: tosca.nodes.Root
-
-        description: >
-            An XOS network parameter type. May be applied to Networks and/or
-            Ports.
-
-        properties:
-            xos_base_props
-
-        capabilities:
-            network_parameter_type:
-                type: tosca.capabilities.xos.NetworkParameterType
-
-    tosca.nodes.NetworkTemplate:
-        derived_from: tosca.nodes.Root
-
-        description: >
-            An XOS network template. Network templates contain settings associated
-            with a particular class of network.
-
-        capabilities:
-            network_template:
-                type: tosca.capabilities.xos.NetworkTemplate
-
-        properties:
-            xos_base_props
-            visibility:
-                type: string
-                required: false
-                description: Indicates whether network is publicly routable.
-            translation:
-                type: string
-                required: false
-                description: Indicates whether network uses address translation.
-            shared_network_name:
-                type: string
-                required: false
-                description: Attaches this template to a specific OpenStack network.
-            shared_network_id:
-                type: string
-                required: false
-                description: Attaches this template to a specific OpenStack network.
-            topology_kind:
-                type: string
-                required: false
-                description: Describes the topology of the network.
-            controller_kind:
-                type: string
-                required: false
-                description: Indicates the type of controller that the network is connected to.
-            access:
-                type: string
-                required: false
-                description: The type of access semantics for this network
-            vtn_kind:
-                type: string
-                required: false
-                description: Network kind to pass to VTN
-
-    tosca.nodes.network.Network.XOS:
-          # Due to bug? in implementation, we have to copy everything from
-          # tosca definitions tosca.nodes.network.Network here rather than
-          # using derived_from.
-          derived_from: tosca.nodes.Root
-          description: >
-            This is a variant of the TOSCA Network object that includes additional
-            XOS-specific properties.
-          properties:
-            xos_base_props
-            ip_version:
-              type: integer
-              required: no
-              default: 4
-              constraints:
-                - valid_values: [ 4, 6 ]
-              description: >
-                The IP version of the requested network. Valid values are 4 for ipv4
-                or 6 for ipv6.
-            cidr:
-              type: string
-              required: no
-              description: >
-                The cidr block of the requested network.
-            start_ip:
-              type: string
-              required: no
-              description: >
-                 The IP address to be used as the start of a pool of addresses within
-                 the full IP range derived from the cidr block.
-            end_ip:
-              type: string
-              required: no
-              description: >
-                  The IP address to be used as the end of a pool of addresses within
-                  the full IP range derived from the cidr block.
-            gateway_ip:
-              type: string
-              required: no
-              description: >
-                 The gateway IP address.
-            network_name:
-              type: string
-              required: no
-              description: >
-                 An identifier that represents an existing Network instance in the
-                 underlying cloud infrastructure or can be used as the name of the
-                 newly created network. If network_name is provided and no other
-                 properties are provided (with exception of network_id), then an
-                 existing network instance will be used. If network_name is provided
-                 alongside with more properties then a new network with this name will
-                 be created.
-            network_id:
-              type: string
-              required: no
-              description: >
-                 An identifier that represents an existing Network instance in the
-                 underlying cloud infrastructure. This property is mutually exclusive
-                 with all other properties except network_name. This can be used alone
-                 or together with network_name to identify an existing network.
-            segmentation_id:
-              type: string
-              required: no
-              description: >
-                 A segmentation identifier in the underlying cloud infrastructure.
-                 E.g. VLAN ID, GRE tunnel ID, etc..
-            dhcp_enabled:
-              type: boolean
-              required: no
-              default: true
-              description: >
-                Indicates should DHCP service be enabled on the network or not.
-        # XOS-specific
-            ports:
-                type: string
-                required: false
-                description: >
-                    A comma-separated list of protocols and ports. For example,
-                    "tcp/123, tcp/456-459, udp/111"
-            labels:
-                type: string
-                required: false
-                description: A comma-separated list of labels for this network.
-            permit_all_slices:
-                type: boolean
-                # In the data model, this is defaulted to false. However, to
-                # preserve Tosca semantics, we default it to true instead.
-                default: true
-                description: If True, then any slice may be attached to this network.
-          capabilities:
-            link:
-              type: tosca.capabilities.network.Linkable
-
-    tosca.nodes.Deployment:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Deployment.
-        capabilities:
-            deployment:
-                type: tosca.capabilities.xos.Deployment
-        properties:
-            xos_base_props
-            accessControl:
-                type: string
-                default: allow all
-                description: ACL that describes who may use this deployment.
-            flavors:
-                type: string
-                required: false
-                description: Comma-separated list of flavors that this deployment supports.
-
-    tosca.nodes.AddressPool:
-        derived_from: tosca.nodes.Root
-        description: >
-            A pool of addresses
-        capabilities:
-            addresspool:
-                type: tosca.capabilities.xos.AddressPool
-        properties:
-            xos_base_props
-            addresses:
-                type: string
-                required: false
-                description: space-separated list of addresses
-            gateway_ip:
-                type: string
-                required: false
-                description: gateway ip address
-            gateway_mac:
-                type: string
-                required: false
-                description: gateway mac address
-
-    tosca.nodes.Privilege:
-        derived_from: tosca.nodes.Root
-        description: >
-            A permission granted to an accessor (a user, slice etc.) towards some type of access
-        capabilities:
-            privilege:
-                type: tosca.capabilities.xos.privilege
-        properties:
-            xos_base_props
-            accessor_id:
-                type: integer
-                required: true
-                description: id of the object representing the accessor
-            accessor_type:
-                type: string
-                required: true
-                description: name of the model representing the accessor
-            object_id:
-                type: integer
-                required: true
-                description: id of the object being accessed
-            object_type:
-                type: string
-                required: true
-                description: name of the model representing the object being accessed
-            permission:
-                type: string
-                required: true
-                description: a custom name that defines the type of access
-            granted:
-                type: string
-                required: false
-                description: time at which the permission was granted
-            expires:
-                type: string
-                required: false
-                description: time at which the permission is set to expire
-
-    tosca.nodes.Image:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Operating System Image.
-        capabilities:
-            image:
-                type: tosca.capabilities.xos.Image
-        properties:
-            xos_base_props
-            kind:
-                type: string
-                required: false
-                description: Type of image (container | VM)
-            disk_format:
-                type: string
-                required: false
-                description: Glance disk format.
-            container_format:
-                type: string
-                required: false
-                description: Glance container format.
-            path:
-                type: string
-                required: false
-                description: Path to Image file
-            tag:
-                type: string
-                required: false
-                description: For Docker images, tag of image
-
-    tosca.nodes.Controller:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS controller. Controllers serve as the interface between
-            XOS and services such as OpenStack.
-        capabilities:
-            controller:
-                type: tosca.capabilities.xos.Controller
-        properties:
-            xos_base_props
-            backend_type:
-                type: string
-                required: false
-                description: Type of backend.
-            version:
-                type: string
-                required: false
-                description: Version of backend.
-            auth_url:
-                type: string
-                required: false
-                description: Keystone auth_url.
-            admin_user:
-                type: string
-                required: false
-                description: Keystone username.
-            admin_password:
-                type: string
-                required: false
-                description: Keystone password.
-            admin_tenant:
-                type: string
-                required: false
-                description: Tenant associated with admin account.
-            domain:
-                type: string
-                required: false
-                description: OpenStack domain (or "Default")
-            rabbit_host:
-                type: string
-                required: false
-                description: Rabbit host
-            rabbit_user:
-                type: string
-                required: false
-                description: Rabbit user
-            rabbit_password:
-                type: string
-                required: false
-                description: Rabbit password
-
-    tosca.nodes.Site:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Site. Sites are containers for Users and/or Nodes.
-        capabilities:
-            site:
-                type: tosca.capabilities.xos.Site
-        properties:
-            xos_base_props
-            display_name:
-                type: string
-                required: false
-                description: Name of the site.
-            site_url:
-                type: string
-                required: false
-                description: URL of site web page.
-            enabled:
-                type: boolean
-                default: true
-            hosts_nodes:
-                type: boolean
-                default: true
-                description: If True, then this site hosts nodes where Instances may be instantiated.
-            hosts_users:
-                type: boolean
-                default: true
-                description: If True, then this site hosts users who may use XOS.
-            is_public:
-                type: boolean
-                default: true
-            # location, longitude, latitude
-
-    tosca.nodes.Slice:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Slice. A slice is a collection of instances that share
-            common attributes.
-        capabilities:
-            slice:
-                type: tosca.capabilities.xos.Slice
-        properties:
-            xos_base_props
-            enabled:
-                type: boolean
-                default: true
-            description:
-                type: string
-                required: false
-                description: Description of this slice.
-            slice_url:
-                type: string
-                required: false
-                description: URL to web page that describes slice.
-            max_instances:
-                type: integer
-                default: 10
-                description: Quota of instances that this slice may create.
-            default_isolation:
-                type: string
-                required: false
-                description: default isolation to use when bringing up instances (default to 'vm')
-            network:
-                type: string
-                required: false
-                description: type of networking to use for this slice
-            exposed_ports:
-                type: string
-                required: false
-                description: comma-separated list of protocol _space_ port that represent ports the slice should expose
-            default_node:
-                type: string
-                required: false
-                description: default node to use for this slice
-
-    tosca.nodes.Node:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Node. Nodes are physical machines that host virtual machines
-            and/or containers.
-        properties:
-            xos_base_props
-            bridgeId:
-                type: string
-                required: false
-                description: Bridge ID
-            dataPlaneIntf:
-                type: string
-                required: false
-                description: data plane interface
-            dataPlaneIp:
-                type: string
-                required: false
-                description: data plane ip
-            hostManagementIface:
-                type: string
-                required: false
-                description: host management interface
-        capabilities:
-            node:
-                type: tosca.capabilities.xos.Node
-
-    tosca.nodes.NodeLabel:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS NodeLabel.
-        properties:
-            xos_base_props
-        capabilities:
-            node:
-                type: tosca.capabilities.xos.NodeLabel
-
-    tosca.nodes.Flavor:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Flavor.
-        properties:
-            xos_base_props
-            flavor:
-                type: string
-                required: false
-                description: openstack flavor name
-        capabilities:
-            flavor:
-                type: tosca.capabilities.xos.Flavor
-
-    tosca.nodes.SiteRole:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Site Role.
-        properties:
-            xos_base_props
-        capabilities:
-            siterole:
-                type: tosca.capabilities.xos.SiteRole
-
-    tosca.nodes.SliceRole:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Slice Role.
-        properties:
-            xos_base_props
-        capabilities:
-            slicerole:
-                type: tosca.capabilities.xos.SliceRole
-
-    tosca.nodes.TenantRole:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Tenant Role.
-        properties:
-            xos_base_props
-        capabilities:
-            tenantrole:
-                type: tosca.capabilities.xos.TenantRole
-
-    tosca.nodes.DeploymentRole:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Deployment Role.
-        properties:
-            xos_base_props
-        capabilities:
-            deploymentrole:
-                type: tosca.capabilities.xos.DeploymentRole
-
-    tosca.nodes.Tag:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Tag
-        properties:
-            xos_base_props
-            name:
-                type: string
-                required: true
-                descrption: name of tag
-            value:
-                type: string
-                required: false
-                descrption: value of tag
-
-    tosca.nodes.Compute.Container:
-      derived_from: tosca.nodes.Compute
-      description: >
-        The TOSCA Compute node represents a container on bare metal.
-      attributes:
-        private_address:
-          type: string
-        public_address:
-          type: string
-      capabilities:
-          host:
-             type: tosca.capabilities.Container
-          binding:
-             type: tosca.capabilities.network.Bindable
-          os:
-             type: tosca.capabilities.OperatingSystem
-          scalable:
-             type: tosca.capabilities.Scalable
-      requirements:
-        - local_storage:
-            capability: tosca.capabilities.Attachment
-            node: tosca.nodes.BlockStorage
-            relationship: tosca.relationships.AttachesTo
-            occurrences: [0, UNBOUNDED]
-
-    tosca.relationships.MemberOfSlice:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Slice ]
-
-    tosca.relationships.MemberOfService:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Service ]
-
-    tosca.relationships.MemberOfSite:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Site ]
-
-    tosca.relationships.MemberOfDeployment:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Deployment ]
-
-    tosca.relationships.TenantOfService:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Service ]
-
-    tosca.relationships.UsedByService:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Service ]
-
-    tosca.relationships.ControllerDeployment:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Deployment ]
-
-    tosca.relationships SiteDeployment:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Deployment ]
-
-    tosca.relationships.UsesController:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Controller ]
-
-    tosca.relationships.ConnectsToNetwork:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Network ]
-
-    tosca.relationships.UsesImage:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Image ]
-
-    tosca.relationships.DefaultImage:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Image ]
-
-    tosca.relationships.SupportsImage:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Image ]
-
-    tosca.relationships.HasPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Privilege ]
-
-    tosca.relationships.SupportsPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Privilege ]
-
-    tosca.relationships.ConnectsToSlice:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Slice ]
-
-    #    tosca.relationships.OwnsNetwork:
-    #        derived_from: tosca.relationships.Root
-    #        valid_target_types: [ tosca.capabilities.xos.Network ]
-
-    tosca.relationships.UsesNetworkTemplate:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.NetworkTemplate ]
-
-    tosca.relationships.AdminPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Slice, tosca.capabilities.xos.Site ]
-
-    tosca.relationships.AccessPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Slice, tosca.capabilities.xos.Site ]
-
-    tosca.relationships.PIPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Site ]
-
-    tosca.relationships.TechPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Site ]
-
-    tosca.relationships.SubscriberDevice:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Subscriber ]
-
-    tosca.relationships.BelongsToSubscriber:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Subscriber ]
-
-    tosca.relationships.BelongsToTenant:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Tenant ]
-
-    tosca.relationships.HasLabel:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.NodeLabel ]
-
-    tosca.relationships.SupportsFlavor:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Flavor ]
-
-    tosca.relationships.DefaultFlavor:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Flavor ]
-
-    tosca.relationships.ProvidesAddresses:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.AddressPool ]
-
-    tosca.relationships.DependsOn:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.TagsObject:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.MemberOfDevice:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.UsesAgent:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.HasResource:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.UsedByController:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.UsedByXOS:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.IsType:
-        derived_from: tosca.relationships.Root
-
-    tosca.capabilities.xos.Service:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Service
-
-    tosca.capabilities.xos.Deployment:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Deployment
-
-    tosca.capabilities.xos.Controller:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Controller
-
-    tosca.capabilities.xos.Site:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Site
-
-    tosca.capabilities.xos.Slice:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Slice
-
-    tosca.capabilities.xos.NetworkTemplate:
-        derived_from: tosca.capabilities.Root
-        description: An XOS network template
-
-#    tosca.capabilities.xos.Network:
-#        derived_from: tosca.capabilities.Root
-#        description: An XOS network
-
-    tosca.capabilities.xos.User:
-        derived_from: tosca.capabilities.Root
-        description: An XOS user
-
-    tosca.capabilities.xos.Subscriber:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Subscriber
-
-    tosca.capabilities.xos.Device:
-        derived_from: tosca.capabilities.Root
-        description: A device belonging to an XOS subscriber
-
-    tosca.capabilities.xos.Node:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Node
-
-    tosca.capabilities.xos.NodeLabel:
-        derived_from: tosca.capabilities.Root
-        description: An XOS NodeLabel
-
-    tosca.capabilities.xos.Flavor:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Flavor
-
-    tosca.capabilities.xos.DeploymentRole:
-        derived_from: tosca.capabilities.Root
-        description: An XOS DeploymentRole
-
-    tosca.capabilities.xos.SliceRole:
-        derived_from: tosca.capabilities.Root
-        description: An XOS SliceRole
-
-    tosca.capabilities.xos.SiteRole:
-        derived_from: tosca.capabilities.Root
-        description: An XOS SiteRole
-
-    tosca.capabilities.xos.TenantRole:
-        derived_from: tosca.capabilities.Root
-        description: An XOS TenantRole
-
-    tosca.capabilities.xos.Tenant:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Tenant
-
-    tosca.capabilities.xos.Image:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Image
-
-    tosca.capabilities.xos.NetworkParameterType:
-        derived_from: tosca.capabilities.Root
-        description: An XOS NetworkParameterType
-
-    tosca.capabilities.xos.AddressPool:
-        derived_from: tosca.capabilities.Root
-        description: An XOS AddressPool
-
-    tosca.capabilities.xos.Privilege:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Privilege
diff --git a/xos/tosca/custom_types/xos.yaml b/xos/tosca/custom_types/xos.yaml
index c7b3b82..42e3379 100644
--- a/xos/tosca/custom_types/xos.yaml
+++ b/xos/tosca/custom_types/xos.yaml
@@ -16,276 +16,7 @@
 
 tosca_definitions_version: tosca_simple_yaml_1_0
 
-# compile this with "m4 xos.m4 > xos.yaml"
-
-# include macros
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# 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
-
-
-# Service
-
-
-# Subscriber
-
-
-
-
-# end m4 macros
-
-
-
 node_types:
-    tosca.nodes.XOS:
-        derived_from: tosca.nodes.Root
-        description: The root of XOS
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            ui_port:
-                type: integer
-                required: false
-                description: TCP port of user interface
-            bootstrap_ui_port:
-                type: integer
-                required: false
-                descrption: TCP port of bootstrap user interface
-            docker_project_name:
-                type: string
-                required: false
-                description: Docker project name
-            db_container_name:
-                type: string
-                required: false
-                description: Database container name
-            redis_container_name:
-                type: string
-                required: false
-                description: redis container name
-            source_ui_image:
-                type: string
-                required: false
-                description: Source UI docker image name
-            dest_ui_image:
-                type: string
-                required: false
-                description: Dest UI docker image name
-            cert_chain_name:
-                type: string
-                required: false
-                description: Name of file that holds certificate chain
-            enable_build:
-                type: boolean
-                required: false
-                description: True if XOS build should be enabled
-            frontend_only:
-                type: boolean
-                required: false
-                description: True if XOS should not start synchronizer containers
-            extra_hosts:
-                type: string
-                required: false
-                description: List of extra_hosts to pass to docker compose
-            no_start:
-                type: boolean
-                required: false
-                description: Whether to start the Django server or not
-            no_build:
-                type: boolean
-                required: false
-                description: Whether to build the core UI image
-
-    tosca.nodes.XOSVolume:
-        derived_from: tosca.nodes.Root
-        description: A volume that should be attached to the XOS docker container
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            host_path:
-                type: string
-                required: false
-                description: path of resource on host
-            read_only:
-                type: boolean
-                required: false
-                description: True if mount read only
-
-    tosca.nodes.XOSGuiExtension:
-        derived_from: tosca.nodes.Root
-        description: A GUI Extension that can be loaded at runtime and need to be persisted
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            files:
-                type: string
-                required: false
-                description: List of comma separated file composing the view
-
-    tosca.nodes.Service:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Service object. Services may be listed in the Service
-            directory and may be linked together via Tenancy Relationships.
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-
-    tosca.nodes.InterfaceType:
-        derived_from: tosca.nodes.Root
-        description: >
-            An interface type.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            direction:
-                type: string
-                required: false
-                description: Direction of interface
-
-    tosca.nodes.ServiceInterface:
-        derived_from: tosca.nodes.Root
-        description: >
-            An interface for the service.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
 
     tosca.nodes.ServiceController:
         derived_from: tosca.nodes.Root
@@ -356,10 +87,12 @@
                 type: string
                 required: false
                 description: synchronizer config filename
+            # NOTE: I am deprecated, I've not been removed yet not to break everything
             tosca_custom_types:
                 type: string
                 required: false
                 description: url of tosca custom_types
+            # NOTE: I am deprecated, I've not been removed yet not to break everything
             tosca_resource:
                 type: string
                 required: false
@@ -397,40 +130,6 @@
                 required: false
                 description: If true then synchronizer container will not be added to docker-compose
 
-    tosca.nodes.ServiceControllerResource:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Service Resource.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                required: false
-                description: models, admin, django_library, synchronizer, rest, tosca_custom_types, or tosca_resource
-            format:
-                type: string
-                required: false
-                description: python, manifest, or docker
-            url:
-                type: string
-                required: false
-                description: url of resource, may be relative to base_url or absolute
-
     tosca.nodes.Library:
         derived_from: tosca.nodes.Root
         description: >
@@ -511,2100 +210,4 @@
             vendor_js:
                 type: string
                 required: false
-                description: third-party javascript files
-
-    tosca.nodes.Component:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Component in the form of a docker container.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            image:
-                type: string
-                required: false
-                description: the base image for the container
-            command:
-                type: string
-                required: false
-                description: the command to execute in the container
-            ports:
-                type: string
-                required: false
-                description: ports that need to be exposed
-            extra:
-                type: string
-                required: false
-                description: ports that need to be exposed
-
-    tosca.nodes.ComponentLink:
-        derived_from: tosca.nodes.Root
-        description: >
-            Links between XOS components.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            container:
-                type: string
-                required: true
-                description: the container that needs to be linked
-            alias:
-                type: string
-                required: true
-                description: alias for the link
-            kind:
-                type: string
-                required: true
-                description: internal or external link
-                constraints:
-                    - valid_values: [ 'internal', 'external' ]
-
-    tosca.nodes.ComponentVolume:
-        derived_from: tosca.nodes.Root
-        description: >
-            Volumes of the XOS components.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            host_path:
-                type: string
-                required: false
-                description: path of resource on host
-            read_only:
-                type: boolean
-                required: false
-                description: True if mount read only
-
-    tosca.nodes.ComponentVolumeContainer:
-        derived_from: tosca.nodes.Root
-        description: >
-            Container Volumes used by XOS components.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            name:
-                type: string
-                required: false
-                description: Identifier of the Container Volume
-            container:
-                type: string
-                required: false
-                description: Name of the Container Volume
-
-    tosca.relationships.LinkOfComponent:
-            derived_from: tosca.relationships.Root
-            valid_target_types: [ tosca.capabilities.xos.ComponentLink ]
-
-    tosca.relationships.VolumeOfComponent:
-            derived_from: tosca.relationships.Root
-            valid_target_types: [ tosca.capabilities.xos.ComponentVolume ]
-
-    tosca.relationships.VolumeContainerOfComponent:
-            derived_from: tosca.relationships.Root
-            valid_target_types: [ tosca.capabilities.xos.ComponentVolumeContainer ]
-
-    tosca.nodes.Tenant:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS Tenant.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of tenant
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service
-            service_specific_attribute:
-                type: string
-                required: false
-                description: Service-specific attribute, usually a string containing a json dictionary
-            model:
-                type: string
-                required: false
-                description: Name of model to use when instantiating tenant
-
-    tosca.nodes.ONOSService:
-        derived_from: tosca.nodes.Root
-        description: >
-            ONOS Service
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-            rest_onos/v1/network/configuration/:
-                type: string
-                required: false
-            rest_hostname:
-                type: string
-                required: false
-            rest_port:
-                type: string
-                required: false
-            no_container:
-                type: boolean
-                default: false
-            node_key:
-                type: string
-                required: false
-
-
-    tosca.nodes.ONOSApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS Application.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of tenant
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service
-            install_dependencies:
-                type: string
-                required: false
-            dependencies:
-                type: string
-                required: false
-            component_config:
-                type: string
-                required: false
-
-    tosca.nodes.ONOSvBNGApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS vBNG Application.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of tenant
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service
-            dependencies:
-                type: string
-                required: false
-            install_dependencies:
-                type: string
-                required: false
-            component_config:
-                type: string
-                required: false
-            config_addresses.json:
-                type: string
-                required: false
-            config_network-cfg.json:
-                type: string
-                required: false
-            config_virtualbng.json:
-                type: string
-                required: false
-
-    tosca.nodes.ONOSvOLTApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS vOLT Application.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of tenant
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service
-            dependencies:
-                type: string
-                required: false
-            install_dependencies:
-                type: string
-                required: false
-            component_config:
-                type: string
-                required: false
-            config_network-cfg.json:
-                type: string
-                required: false
-            rest_onos/v1/network/configuration/:
-                type: string
-                required: false
-            autogenerate:
-                type: string
-                required: false
-
-    tosca.nodes.ONOSVTNApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS VTN Application.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of tenant
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service
-            dependencies:
-                type: string
-                required: false
-            install_dependencies:
-                type: string
-                required: false
-            rest_onos/v1/network/configuration/:
-                type: string
-                required: false
-            autogenerate:
-                type: string
-                required: false
-
-    tosca.nodes.ONOSvRouterApp:
-        derived_from: tosca.nodes.Root
-        description: >
-            An ONOS vRouter Application.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of tenant
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service
-            dependencies:
-                type: string
-                required: false
-            install_dependencies:
-                type: string
-                required: false
-            rest_onos/v1/network/configuration/:
-                type: string
-                required: false
-            autogenerate:
-                type: string
-                required: false
-
-    tosca.nodes.VSGService:
-        description: >
-            CORD: The vSG Service.
-        derived_from: tosca.nodes.Root
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-            backend_network_label:
-                type: string
-                required: false
-                description: Label that matches network used to connect HPC and BBS services.
-            dns_servers:
-                type: string
-                required: false
-            node_label:
-                type: string
-                required: false
-            docker_image_name:
-                type: string
-                required: false
-                description: Name of docker image to pull for vSG
-            docker_insecure_registry:
-                type: boolean
-                required: false
-                description: If true, then the hostname:port specified in docker_image_name will be treated as an insecure registry
-
-    tosca.nodes.VBNGService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The vBNG Service.
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-            vbng_url:
-                type: string
-                required: false
-                description: URL of REST API endpoint for vBNG Service.
-
-    tosca.nodes.VRouterService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The vRouter Service.
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-
-    tosca.nodes.FabricService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The Fabric Service.
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-
-    tosca.nodes.VTNService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The vRouter Service.
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-            privateGatewayMac:
-                type: string
-                required: false
-            localManagementIp:
-                type: string
-                required: false
-            ovsdbPort:
-                type: string
-                required: false
-            sshPort:
-                type: string
-                required: false
-            sshUser:
-                type: string
-                required: false
-            sshKeyFile:
-                type: string
-                required: false
-            mgmtSubnetBits:
-                type: string
-                required: false
-            xosEndpoint:
-                type: string
-                required: false
-            xosUser:
-                type: string
-                required: false
-            xosPassword:
-                type: string
-                required: false
-            vtnAPIVersion:
-                type: string
-                required: false
-            controllerPort:
-                type: string
-                required: false
-
-
-    tosca.nodes.CDNService:
-        derived_from: tosca.nodes.Root
-        description: >
-            Content Delivery Network Service. Includes Request Routing and Hypercache.
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-
-    tosca.nodes.CORDSubscriber:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: Subscriber. The Subscriber object contains all of the settings
-            for a CORD household. For example, it contains parental control
-            filter settings.
-        capabilities:
-            subscriber:
-                type: tosca.capabilities.xos.Subscriber
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of subscriber
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service
-            firewall_enable:
-                type: boolean
-                default: false
-                description: If True, then firewalling is enabled.
-            url_filter_enable:
-                type: boolean
-                default: false
-                description: If True, then parental controls are enabled.
-            url_filter_level:
-                type: string
-                default: PG
-                description: The default URL filter level for the household.
-            cdn_enable:
-                type: boolean
-                default: true
-                description: If True, then the CDN is enabled.
-
-    tosca.nodes.CORDUser:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: User. The CORD user represents an individual device beloning
-            to the CORD Subscriber. Each device may have its own parental
-            controls.
-        capabilities:
-            device:
-                type: tosca.capabilities.xos.Device
-        properties:
-            level:
-                type: string
-                default: PG_13
-                description: Parental control level for this device.
-            mac:
-                type: string
-                required: true
-                description: MAC address for this device.
-
-    tosca.nodes.VOLTService:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: The vOLT Service
-        capabilities:
-            scalable:
-                type: tosca.capabilities.Scalable
-            service:
-                type: tosca.capabilities.xos.Service
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                default: generic
-                description: Type of service.
-            view_url:
-                type: string
-                required: false
-                description: URL to follow when icon is clicked in the Service Directory.
-            icon_url:
-                type: string
-                required: false
-                description: ICON to display in the Service Directory.
-            enabled:
-                type: boolean
-                default: true
-            published:
-                type: boolean
-                default: true
-                description: If True then display this Service in the Service Directory.
-            public_key:
-                type: string
-                required: false
-                description: Public key to install into Instances to allows Services to SSH into them.
-            private_key_fn:
-                type: string
-                required: false
-                description: Location of private key file
-            versionNumber:
-                type: string
-                required: false
-                description: Version number of Service.
-
-    tosca.nodes.VOLTTenant:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A Tenant of the vOLT Service. Each Tenant is tied to a
-            specific vlan_id.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of tenant
-            service_specific_id:
-                type: string
-                required: false
-                description: Service specific ID opaque to XOS but meaningful to service
-            s_tag:
-                type: string
-                required: false
-                description: s_tag, identifies which volt port
-            c_tag:
-                type: string
-                required: false
-                description: c_tag, identifies which subscriber within s_tag
-
-    tosca.nodes.VOLTDevice:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A vOLT Device.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            openflow_id:
-                type: string
-                required: false
-                description: openflow id
-            driver:
-                type: string
-                required: false
-                description: driver name
-            access_devices:
-                type: string
-                required: false
-                description: list of access devices, in format "uplink vlan", multiple entries separated by commas
-
-# XXX - uncomment if we want access device to be specified as separate Tosca
-# objects, rather than encoding them into VOLTDevice.access_devices
-#    tosca.nodes.AccessDevice:
-#        derived_from: tosca.nodes.Root
-#        description: >
-#            CORD: A vOLT Access Device.
-#        properties:
-#            xos_base_props
-#            uplink:
-#               type: integer
-#               required: false
-#               description: uplink
-#            vlan:
-#               type: integer
-#               required: false
-#               description: vlan
-
-    tosca.nodes.AccessAgent:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A vOLT Access Agent.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            mac:
-                type: string
-                required: false
-                description: mac address
-            port_mappings:
-                type: string
-                required: false
-                description: list of port mappings, in format "port mac", multiple entries separated by commas
-
-
-    tosca.nodes.User:
-        derived_from: tosca.nodes.Root
-
-        description: >
-            An XOS User record. Users are able to login and use the XOS GUI.
-
-        capabilities:
-            user:
-                type: tosca.capabilities.xos.User
-
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            password:
-                type: string
-                required: false
-            firstname:
-                type: string
-                required: false
-                description: First name of User.
-            lastname:
-                type: string
-                required: false
-                description: Last name of User.
-            phone:
-                type: string
-                required: false
-                description: Phone number of User.
-            user_url:
-                type: string
-                required: false
-                description: URL to User web page.
-            public_key:
-                type: string
-                required: false
-                description: Public key that will be installed in Instances.
-            is_active:
-                type: boolean
-                required: false
-                #default: true
-                description: If True, the user may log in.
-            is_admin:
-                type: boolean
-                required: false
-                #default: false
-                description: If True, the user has root admin privileges.
-            is_readonly:
-                type: boolean
-                required: false
-                #default: false
-                description: If True, the user has read-only privileges in the UI.
-            is_appuser:
-                type: boolean
-                required: false
-                #default: false
-                description: If True, the user may only login to XOS to use apps.
-            login_page:
-                type: string
-                required: false
-                description: Indicates what page the user should go to on login.
-
-    tosca.nodes.NetworkParameterType:
-        derived_from: tosca.nodes.Root
-
-        description: >
-            An XOS network parameter type. May be applied to Networks and/or
-            Ports.
-
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-
-        capabilities:
-            network_parameter_type:
-                type: tosca.capabilities.xos.NetworkParameterType
-
-    tosca.nodes.NetworkTemplate:
-        derived_from: tosca.nodes.Root
-
-        description: >
-            An XOS network template. Network templates contain settings associated
-            with a particular class of network.
-
-        capabilities:
-            network_template:
-                type: tosca.capabilities.xos.NetworkTemplate
-
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            visibility:
-                type: string
-                required: false
-                description: Indicates whether network is publicly routable.
-            translation:
-                type: string
-                required: false
-                description: Indicates whether network uses address translation.
-            shared_network_name:
-                type: string
-                required: false
-                description: Attaches this template to a specific OpenStack network.
-            shared_network_id:
-                type: string
-                required: false
-                description: Attaches this template to a specific OpenStack network.
-            topology_kind:
-                type: string
-                required: false
-                description: Describes the topology of the network.
-            controller_kind:
-                type: string
-                required: false
-                description: Indicates the type of controller that the network is connected to.
-            access:
-                type: string
-                required: false
-                description: The type of access semantics for this network
-            vtn_kind:
-                type: string
-                required: false
-                description: Network kind to pass to VTN
-
-    tosca.nodes.network.Network.XOS:
-          # Due to bug? in implementation, we have to copy everything from
-          # tosca definitions tosca.nodes.network.Network here rather than
-          # using derived_from.
-          derived_from: tosca.nodes.Root
-          description: >
-            This is a variant of the TOSCA Network object that includes additional
-            XOS-specific properties.
-          properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            ip_version:
-              type: integer
-              required: no
-              default: 4
-              constraints:
-                - valid_values: [ 4, 6 ]
-              description: >
-                The IP version of the requested network. Valid values are 4 for ipv4
-                or 6 for ipv6.
-            cidr:
-              type: string
-              required: no
-              description: >
-                The cidr block of the requested network.
-            start_ip:
-              type: string
-              required: no
-              description: >
-                 The IP address to be used as the start of a pool of addresses within
-                 the full IP range derived from the cidr block.
-            end_ip:
-              type: string
-              required: no
-              description: >
-                  The IP address to be used as the end of a pool of addresses within
-                  the full IP range derived from the cidr block.
-            gateway_ip:
-              type: string
-              required: no
-              description: >
-                 The gateway IP address.
-            network_name:
-              type: string
-              required: no
-              description: >
-                 An identifier that represents an existing Network instance in the
-                 underlying cloud infrastructure or can be used as the name of the
-                 newly created network. If network_name is provided and no other
-                 properties are provided (with exception of network_id), then an
-                 existing network instance will be used. If network_name is provided
-                 alongside with more properties then a new network with this name will
-                 be created.
-            network_id:
-              type: string
-              required: no
-              description: >
-                 An identifier that represents an existing Network instance in the
-                 underlying cloud infrastructure. This property is mutually exclusive
-                 with all other properties except network_name. This can be used alone
-                 or together with network_name to identify an existing network.
-            segmentation_id:
-              type: string
-              required: no
-              description: >
-                 A segmentation identifier in the underlying cloud infrastructure.
-                 E.g. VLAN ID, GRE tunnel ID, etc..
-            dhcp_enabled:
-              type: boolean
-              required: no
-              default: true
-              description: >
-                Indicates should DHCP service be enabled on the network or not.
-        # XOS-specific
-            ports:
-                type: string
-                required: false
-                description: >
-                    A comma-separated list of protocols and ports. For example,
-                    "tcp/123, tcp/456-459, udp/111"
-            labels:
-                type: string
-                required: false
-                description: A comma-separated list of labels for this network.
-            permit_all_slices:
-                type: boolean
-                # In the data model, this is defaulted to false. However, to
-                # preserve Tosca semantics, we default it to true instead.
-                default: true
-                description: If True, then any slice may be attached to this network.
-          capabilities:
-            link:
-              type: tosca.capabilities.network.Linkable
-
-    tosca.nodes.Deployment:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Deployment.
-        capabilities:
-            deployment:
-                type: tosca.capabilities.xos.Deployment
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            accessControl:
-                type: string
-                default: allow all
-                description: ACL that describes who may use this deployment.
-            flavors:
-                type: string
-                required: false
-                description: Comma-separated list of flavors that this deployment supports.
-
-    tosca.nodes.AddressPool:
-        derived_from: tosca.nodes.Root
-        description: >
-            A pool of addresses
-        capabilities:
-            addresspool:
-                type: tosca.capabilities.xos.AddressPool
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            addresses:
-                type: string
-                required: false
-                description: space-separated list of addresses
-            gateway_ip:
-                type: string
-                required: false
-                description: gateway ip address
-            gateway_mac:
-                type: string
-                required: false
-                description: gateway mac address
-
-    tosca.nodes.Privilege:
-        derived_from: tosca.nodes.Root
-        description: >
-            A permission granted to an accessor (a user, slice etc.) towards some type of access
-        capabilities:
-            privilege:
-                type: tosca.capabilities.xos.privilege
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            accessor_id:
-                type: integer
-                required: true
-                description: id of the object representing the accessor
-            accessor_type:
-                type: string
-                required: true
-                description: name of the model representing the accessor
-            object_id:
-                type: integer
-                required: true
-                description: id of the object being accessed
-            object_type:
-                type: string
-                required: true
-                description: name of the model representing the object being accessed
-            permission:
-                type: string
-                required: true
-                description: a custom name that defines the type of access
-            granted:
-                type: string
-                required: false
-                description: time at which the permission was granted
-            expires:
-                type: string
-                required: false
-                description: time at which the permission is set to expire
-
-    tosca.nodes.Image:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Operating System Image.
-        capabilities:
-            image:
-                type: tosca.capabilities.xos.Image
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            kind:
-                type: string
-                required: false
-                description: Type of image (container | VM)
-            disk_format:
-                type: string
-                required: false
-                description: Glance disk format.
-            container_format:
-                type: string
-                required: false
-                description: Glance container format.
-            path:
-                type: string
-                required: false
-                description: Path to Image file
-            tag:
-                type: string
-                required: false
-                description: For Docker images, tag of image
-
-    tosca.nodes.Controller:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS controller. Controllers serve as the interface between
-            XOS and services such as OpenStack.
-        capabilities:
-            controller:
-                type: tosca.capabilities.xos.Controller
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            backend_type:
-                type: string
-                required: false
-                description: Type of backend.
-            version:
-                type: string
-                required: false
-                description: Version of backend.
-            auth_url:
-                type: string
-                required: false
-                description: Keystone auth_url.
-            admin_user:
-                type: string
-                required: false
-                description: Keystone username.
-            admin_password:
-                type: string
-                required: false
-                description: Keystone password.
-            admin_tenant:
-                type: string
-                required: false
-                description: Tenant associated with admin account.
-            domain:
-                type: string
-                required: false
-                description: OpenStack domain (or "Default")
-            rabbit_host:
-                type: string
-                required: false
-                description: Rabbit host
-            rabbit_user:
-                type: string
-                required: false
-                description: Rabbit user
-            rabbit_password:
-                type: string
-                required: false
-                description: Rabbit password
-
-    tosca.nodes.Site:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Site. Sites are containers for Users and/or Nodes.
-        capabilities:
-            site:
-                type: tosca.capabilities.xos.Site
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            display_name:
-                type: string
-                required: false
-                description: Name of the site.
-            site_url:
-                type: string
-                required: false
-                description: URL of site web page.
-            enabled:
-                type: boolean
-                default: true
-            hosts_nodes:
-                type: boolean
-                default: true
-                description: If True, then this site hosts nodes where Instances may be instantiated.
-            hosts_users:
-                type: boolean
-                default: true
-                description: If True, then this site hosts users who may use XOS.
-            is_public:
-                type: boolean
-                default: true
-            # location, longitude, latitude
-
-    tosca.nodes.Slice:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Slice. A slice is a collection of instances that share
-            common attributes.
-        capabilities:
-            slice:
-                type: tosca.capabilities.xos.Slice
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            enabled:
-                type: boolean
-                default: true
-            description:
-                type: string
-                required: false
-                description: Description of this slice.
-            slice_url:
-                type: string
-                required: false
-                description: URL to web page that describes slice.
-            max_instances:
-                type: integer
-                default: 10
-                description: Quota of instances that this slice may create.
-            default_isolation:
-                type: string
-                required: false
-                description: default isolation to use when bringing up instances (default to 'vm')
-            network:
-                type: string
-                required: false
-                description: type of networking to use for this slice
-            exposed_ports:
-                type: string
-                required: false
-                description: comma-separated list of protocol _space_ port that represent ports the slice should expose
-            default_node:
-                type: string
-                required: false
-                description: default node to use for this slice
-
-    tosca.nodes.Node:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Node. Nodes are physical machines that host virtual machines
-            and/or containers.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            bridgeId:
-                type: string
-                required: false
-                description: Bridge ID
-            dataPlaneIntf:
-                type: string
-                required: false
-                description: data plane interface
-            dataPlaneIp:
-                type: string
-                required: false
-                description: data plane ip
-            hostManagementIface:
-                type: string
-                required: false
-                description: host management interface
-        capabilities:
-            node:
-                type: tosca.capabilities.xos.Node
-
-    tosca.nodes.NodeLabel:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS NodeLabel.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-        capabilities:
-            node:
-                type: tosca.capabilities.xos.NodeLabel
-
-    tosca.nodes.Flavor:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Flavor.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            flavor:
-                type: string
-                required: false
-                description: openstack flavor name
-        capabilities:
-            flavor:
-                type: tosca.capabilities.xos.Flavor
-
-    tosca.nodes.SiteRole:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Site Role.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-        capabilities:
-            siterole:
-                type: tosca.capabilities.xos.SiteRole
-
-    tosca.nodes.SliceRole:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Slice Role.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-        capabilities:
-            slicerole:
-                type: tosca.capabilities.xos.SliceRole
-
-    tosca.nodes.TenantRole:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Tenant Role.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-        capabilities:
-            tenantrole:
-                type: tosca.capabilities.xos.TenantRole
-
-    tosca.nodes.DeploymentRole:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Deployment Role.
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-        capabilities:
-            deploymentrole:
-                type: tosca.capabilities.xos.DeploymentRole
-
-    tosca.nodes.Tag:
-        derived_from: tosca.nodes.Root
-        description: >
-            An XOS Tag
-        properties:
-            no-delete:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to delete this object
-            no-create:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to create this object
-            no-update:
-                type: boolean
-                default: false
-                description: Do not allow Tosca to update this object
-            replaces:
-                type: string
-                required: false
-                descrption: Replaces/renames this object
-            name:
-                type: string
-                required: true
-                descrption: name of tag
-            value:
-                type: string
-                required: false
-                descrption: value of tag
-
-    tosca.nodes.Compute.Container:
-      derived_from: tosca.nodes.Compute
-      description: >
-        The TOSCA Compute node represents a container on bare metal.
-      attributes:
-        private_address:
-          type: string
-        public_address:
-          type: string
-      capabilities:
-          host:
-             type: tosca.capabilities.Container
-          binding:
-             type: tosca.capabilities.network.Bindable
-          os:
-             type: tosca.capabilities.OperatingSystem
-          scalable:
-             type: tosca.capabilities.Scalable
-      requirements:
-        - local_storage:
-            capability: tosca.capabilities.Attachment
-            node: tosca.nodes.BlockStorage
-            relationship: tosca.relationships.AttachesTo
-            occurrences: [0, UNBOUNDED]
-
-    tosca.relationships.MemberOfSlice:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Slice ]
-
-    tosca.relationships.MemberOfService:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Service ]
-
-    tosca.relationships.MemberOfSite:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Site ]
-
-    tosca.relationships.MemberOfDeployment:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Deployment ]
-
-    tosca.relationships.TenantOfService:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Service ]
-
-    tosca.relationships.UsedByService:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Service ]
-
-    tosca.relationships.ControllerDeployment:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Deployment ]
-
-    tosca.relationships SiteDeployment:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Deployment ]
-
-    tosca.relationships.UsesController:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Controller ]
-
-    tosca.relationships.ConnectsToNetwork:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Network ]
-
-    tosca.relationships.UsesImage:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Image ]
-
-    tosca.relationships.DefaultImage:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Image ]
-
-    tosca.relationships.SupportsImage:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Image ]
-
-    tosca.relationships.HasPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Privilege ]
-
-    tosca.relationships.SupportsPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Privilege ]
-
-    tosca.relationships.ConnectsToSlice:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Slice ]
-
-    #    tosca.relationships.OwnsNetwork:
-    #        derived_from: tosca.relationships.Root
-    #        valid_target_types: [ tosca.capabilities.xos.Network ]
-
-    tosca.relationships.UsesNetworkTemplate:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.NetworkTemplate ]
-
-    tosca.relationships.AdminPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Slice, tosca.capabilities.xos.Site ]
-
-    tosca.relationships.AccessPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Slice, tosca.capabilities.xos.Site ]
-
-    tosca.relationships.PIPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Site ]
-
-    tosca.relationships.TechPrivilege:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Site ]
-
-    tosca.relationships.SubscriberDevice:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Subscriber ]
-
-    tosca.relationships.BelongsToSubscriber:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Subscriber ]
-
-    tosca.relationships.BelongsToTenant:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Tenant ]
-
-    tosca.relationships.HasLabel:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.NodeLabel ]
-
-    tosca.relationships.SupportsFlavor:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Flavor ]
-
-    tosca.relationships.DefaultFlavor:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.Flavor ]
-
-    tosca.relationships.ProvidesAddresses:
-        derived_from: tosca.relationships.Root
-        valid_target_types: [ tosca.capabilities.xos.AddressPool ]
-
-    tosca.relationships.DependsOn:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.TagsObject:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.MemberOfDevice:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.UsesAgent:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.HasResource:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.UsedByController:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.UsedByXOS:
-        derived_from: tosca.relationships.Root
-
-    tosca.relationships.IsType:
-        derived_from: tosca.relationships.Root
-
-    tosca.capabilities.xos.Service:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Service
-
-    tosca.capabilities.xos.Deployment:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Deployment
-
-    tosca.capabilities.xos.Controller:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Controller
-
-    tosca.capabilities.xos.Site:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Site
-
-    tosca.capabilities.xos.Slice:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Slice
-
-    tosca.capabilities.xos.NetworkTemplate:
-        derived_from: tosca.capabilities.Root
-        description: An XOS network template
-
-#    tosca.capabilities.xos.Network:
-#        derived_from: tosca.capabilities.Root
-#        description: An XOS network
-
-    tosca.capabilities.xos.User:
-        derived_from: tosca.capabilities.Root
-        description: An XOS user
-
-    tosca.capabilities.xos.Subscriber:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Subscriber
-
-    tosca.capabilities.xos.Device:
-        derived_from: tosca.capabilities.Root
-        description: A device belonging to an XOS subscriber
-
-    tosca.capabilities.xos.Node:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Node
-
-    tosca.capabilities.xos.NodeLabel:
-        derived_from: tosca.capabilities.Root
-        description: An XOS NodeLabel
-
-    tosca.capabilities.xos.Flavor:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Flavor
-
-    tosca.capabilities.xos.DeploymentRole:
-        derived_from: tosca.capabilities.Root
-        description: An XOS DeploymentRole
-
-    tosca.capabilities.xos.SliceRole:
-        derived_from: tosca.capabilities.Root
-        description: An XOS SliceRole
-
-    tosca.capabilities.xos.SiteRole:
-        derived_from: tosca.capabilities.Root
-        description: An XOS SiteRole
-
-    tosca.capabilities.xos.TenantRole:
-        derived_from: tosca.capabilities.Root
-        description: An XOS TenantRole
-
-    tosca.capabilities.xos.Tenant:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Tenant
-
-    tosca.capabilities.xos.Image:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Image
-
-    tosca.capabilities.xos.NetworkParameterType:
-        derived_from: tosca.capabilities.Root
-        description: An XOS NetworkParameterType
-
-    tosca.capabilities.xos.AddressPool:
-        derived_from: tosca.capabilities.Root
-        description: An XOS AddressPool
-
-    tosca.capabilities.xos.Privilege:
-        derived_from: tosca.capabilities.Root
-        description: An XOS Privilege
+                description: third-party javascript files
\ No newline at end of file
diff --git a/xos/tosca/daemon.py b/xos/tosca/daemon.py
deleted file mode 100644
index 1f015eb..0000000
--- a/xos/tosca/daemon.py
+++ /dev/null
@@ -1,108 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-""" A very simple Tosca daemon. Every ten seconds it looks for new programs in
-    "run" or "destroy" status, and executes them.
-
-    TODO: Replace this with observer and/or model_policies ?
-"""
-
-import os
-import sys
-from threading import Thread
-import time
-
-# add the parent directory to sys.path
-import os,sys,inspect
-currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
-parentdir = os.path.dirname(currentdir)
-sys.path.append(parentdir)
-
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
-import django
-django.setup()
-
-from core.models import Program, User
-from nodeselect import XOSNodeSelector
-from imageselect import XOSImageSelector
-import traceback
-
-from engine import XOSTosca
-
-class ToscaDaemon(Thread):
-    def __init__(self):
-        Thread.__init__(self)
-        self.daemon = True
-
-    def run_program(self, model):
-        try:
-            print "*** Run Program %s ***" % model.name
-            model.status = "executing"
-            model.messages = ""
-            model.save()
-            xt = XOSTosca(model.contents, parent_dir=currentdir, log_to_console=True)
-            xt.execute(model.owner)
-            model.messages = "\n".join(xt.log_msgs)
-            model.status = "complete"
-        except:
-            model.messages = traceback.format_exc()
-            model.status = "exception"
-            traceback.print_exc()
-        model.command = None
-        model.save()
-
-    def destroy_program(self, model):
-        try:
-            print "*** Destroy Program %s ***" % model.name
-            model.status = "executing"
-            model.messages = ""
-            model.save()
-            xt = XOSTosca(model.contents, parent_dir=currentdir)
-            xt.destroy(model.owner)
-            model.messages = "\n".join(xt.log_msgs)
-            model.status = "complete"
-        except:
-            model.messages = traceback.format_exc()
-            model.status = "exception"
-            traceback.print_exc()
-        model.command = None
-        model.save()
-
-    def run_once(self):
-        models = Program.objects.filter(kind="tosca", command="run")
-        for model in models:
-            self.run_program(model)
-
-        models = Program.objects.filter(kind="tosca", command="destroy")
-        for model in models:
-            self.destroy_program(model)
-
-    def run(self):
-        while True:
-            self.run_once()
-            time.sleep(10)
-            django.db.reset_queries()
-
-if __name__ == "__main__":
-    if "--once" in sys.argv:
-        ToscaDaemon().execute_once()
-    else:
-        ToscaDaemon().start()
-
-        print "Running forever..."
-        while True:
-            time.sleep(60)
-
diff --git a/xos/tosca/definitions/TOSCA_definition_1_0.yaml b/xos/tosca/definitions/TOSCA_definition_1_0.yaml
deleted file mode 100644
index e6d74e5..0000000
--- a/xos/tosca/definitions/TOSCA_definition_1_0.yaml
+++ /dev/null
@@ -1,742 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-#    Licensed under the Apache License, Version 2.0 (the "License"); you may
-#    not use this file except in compliance with the License. You may obtain
-#    a copy of the License at
-#
-#         http://www.apache.org/licenses/LICENSE-2.0
-#
-#    Unless required by applicable law or agreed to in writing, software
-#    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
-#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
-#    License for the specific language governing permissions and limitations
-#    under the License.
-
-##########################################################################
-# The content of this file reflects TOSCA Simple Profile in YAML version
-# 1.0.0. It describes the definition for TOSCA types including Node Type,
-# Relationship Type, Capability Type and Interfaces.
-##########################################################################
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-##########################################################################
-# Node Type.
-# A Node Type is a reusable entity that defines the type of one or more
-# Node Templates.
-##########################################################################
-tosca.nodes.Root:
-  description: >
-    The TOSCA root node all other TOSCA base node types derive from.
-  attributes:
-    tosca_id:
-      type: string
-    tosca_name:
-      type: string
-    state:
-      type: string
-    capabilities:
-      feature:
-        type: tosca.capabilities.Node
-  requirements:
-    - dependency:
-        capability: tosca.capabilities.Node
-        node: tosca.nodes.Root
-        relationship: tosca.relationships.DependsOn
-        occurrences: [ 0, UNBOUNDED ]
-  interfaces:
-    Standard:
-      type: tosca.interfaces.node.lifecycle.Standard
-
-tosca.nodes.Compute:
-  derived_from: tosca.nodes.Root
-  description: >
-    The TOSCA Compute node represents one or more real or virtual processors
-    of software applications or services along with other essential local
-    resources.  Collectively, the resources the compute node represents can
-    logically be viewed as a (real or virtual) server.
-  attributes:
-    private_address:
-      type: string
-    public_address:
-      type: string
-  capabilities:
-      host:
-         type: tosca.capabilities.Container
-      binding:
-         type: tosca.capabilities.network.Bindable
-      os:
-         type: tosca.capabilities.OperatingSystem
-      scalable:
-         type: tosca.capabilities.Scalable
-  requirements:
-    - local_storage:
-        capability: tosca.capabilities.Attachment
-        node: tosca.nodes.BlockStorage
-        relationship: tosca.relationships.AttachesTo
-        occurrences: [0, UNBOUNDED]
-
-tosca.nodes.SoftwareComponent:
-  derived_from: tosca.nodes.Root
-  properties:
-    # domain-specific software component version
-    component_version:
-      type: version
-      required: false
-      description: >
-        Software component version.
-    admin_credential:
-      type: tosca.datatypes.Credential
-      required: false
-  requirements:
-    - host:
-        capability: tosca.capabilities.Container
-        node: tosca.nodes.Compute
-        relationship: tosca.relationships.HostedOn
-
-tosca.nodes.DBMS:
-  derived_from: tosca.nodes.SoftwareComponent
-  properties:
-    port:
-      required: no
-      type: integer
-      description: >
-        The port the DBMS service will listen to for data and requests.
-    root_password:
-      required: no
-      type: string
-      description: >
-        The root password for the DBMS service.
-  capabilities:
-    host:
-      type: tosca.capabilities.Container
-      valid_source_types: [tosca.nodes.Database]
-
-tosca.nodes.Database:
-  derived_from: tosca.nodes.Root
-  properties:
-    user:
-      required: no
-      type: string
-      description: >
-        User account name for DB administration
-    name:
-      required: no
-      type: string
-      description: >
-        The name of the database.
-    password:
-      required: no
-      type: string
-      description: >
-        The password for the DB user account
-  requirements:
-    - host:
-        capability: tosca.capabilities.Container
-        node: tosca.nodes.DBMS
-        relationship: tosca.relationships.HostedOn
-  capabilities:
-    database_endpoint:
-      type: tosca.capabilities.Endpoint.Database
-
-tosca.nodes.WebServer:
-  derived_from: tosca.nodes.SoftwareComponent
-  capabilities:
-    data_endpoint:
-      type: tosca.capabilities.Endpoint
-    admin_endpoint:
-      type: tosca.capabilities.Endpoint.Admin
-    host:
-      type: tosca.capabilities.Container
-      valid_source_types: [tosca.nodes.WebApplication]
-
-tosca.nodes.WebApplication:
-  derived_from: tosca.nodes.Root
-  properties:
-    context_root:
-      type: string
-      required: false
-  requirements:
-    - host:
-        capability: tosca.capabilities.Container
-        node: tosca.nodes.WebServer
-        relationship: tosca.relationships.HostedOn
-  capabilities:
-    app_endpoint:
-      type: tosca.capabilities.Endpoint
-
-tosca.nodes.BlockStorage:
-  derived_from: tosca.nodes.Root
-  properties:
-    size:
-      type: integer
-      constraints:
-        - greater_or_equal: 1
-    volume_id:
-      type: string
-      required: false
-    snapshot_id:
-      type: string
-      required: false
-  attributes:
-    volume_id:
-      type: string
-  capabilities:
-    attachment:
-      type: tosca.capabilities.Attachment
-
-tosca.nodes.network.Network:
-  derived_from: tosca.nodes.Root
-  description: >
-    The TOSCA Network node represents a simple, logical network service.
-  properties:
-    ip_version:
-      type: integer
-      required: no
-      default: 4
-      constraints:
-        - valid_values: [ 4, 6 ]
-      description: >
-        The IP version of the requested network. Valid values are 4 for ipv4
-        or 6 for ipv6.
-    cidr:
-      type: string
-      required: no
-      description: >
-        The cidr block of the requested network.
-    start_ip:
-      type: string
-      required: no
-      description: >
-         The IP address to be used as the start of a pool of addresses within
-         the full IP range derived from the cidr block.
-    end_ip:
-      type: string
-      required: no
-      description: >
-          The IP address to be used as the end of a pool of addresses within
-          the full IP range derived from the cidr block.
-    gateway_ip:
-      type: string
-      required: no
-      description: >
-         The gateway IP address.
-    network_name:
-      type: string
-      required: no
-      description: >
-         An identifier that represents an existing Network instance in the
-         underlying cloud infrastructure or can be used as the name of the
-         newly created network. If network_name is provided and no other
-         properties are provided (with exception of network_id), then an
-         existing network instance will be used. If network_name is provided
-         alongside with more properties then a new network with this name will
-         be created.
-    network_id:
-      type: string
-      required: no
-      description: >
-         An identifier that represents an existing Network instance in the
-         underlying cloud infrastructure. This property is mutually exclusive
-         with all other properties except network_name. This can be used alone
-         or together with network_name to identify an existing network.
-    segmentation_id:
-      type: string
-      required: no
-      description: >
-         A segmentation identifier in the underlying cloud infrastructure.
-         E.g. VLAN ID, GRE tunnel ID, etc..
-    dhcp_enabled:
-      type: boolean
-      required: no
-      default: true
-      description: >
-        Indicates should DHCP service be enabled on the network or not.
-  capabilities:
-    link:
-      type: tosca.capabilities.network.Linkable
-
-tosca.nodes.network.Port:
-  derived_from: tosca.nodes.Root
-  description: >
-    The TOSCA Port node represents a logical entity that associates between
-    Compute and Network normative types. The Port node type effectively
-    represents a single virtual NIC on the Compute node instance.
-  properties:
-    ip_address:
-      type: string
-      required: no
-      description: >
-        Allow the user to set a static IP.
-    order:
-      type: integer
-      required: no
-      default: 0
-      constraints:
-        - greater_or_equal: 0
-      description: >
-        The order of the NIC on the compute instance (e.g. eth2).
-    is_default:
-      type: boolean
-      required: no
-      default: false
-      description: >
-        If is_default=true this port will be used for the default gateway
-        route. Only one port that is associated to single compute node can
-        set as is_default=true.
-    ip_range_start:
-      type: string
-      required: no
-      description: >
-        Defines the starting IP of a range to be allocated for the compute
-        instances that are associated with this Port.
-    ip_range_end:
-      type: string
-      required: no
-      description: >
-        Defines the ending IP of a range to be allocated for the compute
-        instances that are associated with this Port.
-  attributes:
-    ip_address:
-      type: string
-  requirements:
-    - binding:
-        description: >
-          Binding requirement expresses the relationship between Port and
-          Compute nodes. Effectevely it indicates that the Port will be
-          attached to specific Compute node instance
-        capability: tosca.capabilities.network.Bindable
-        relationship: tosca.relationships.network.BindsTo
-    - link:
-        description: >
-          Link requirement expresses the relationship between Port and Network
-          nodes. It indicates which network this port will connect to.
-        capability: tosca.capabilities.network.Linkable
-        relationship: tosca.relationships.network.LinksTo
-
-tosca.nodes.ObjectStorage:
-  derived_from: tosca.nodes.Root
-  description: >
-    The TOSCA ObjectStorage node represents storage that provides the ability
-    to store data as objects (or BLOBs of data) without consideration for the
-    underlying filesystem or devices
-  properties:
-    name:
-      type: string
-      required: yes
-      description: >
-        The logical name of the object store (or container).
-    size:
-      type: scalar-unit.size
-      required: no
-      constraints:
-        - greater_or_equal: 0 GB
-      description: >
-        The requested initial storage size.
-    maxsize:
-      type: scalar-unit.size
-      required: no
-      constraints:
-        - greater_or_equal: 0 GB
-      description: >
-        The requested maximum storage size.
-  capabilities:
-    storage_endpoint:
-      type: tosca.capabilities.Endpoint
-
-##########################################################################
-# Relationship Type.
-# A Relationship Type is a reusable entity that defines the type of one
-# or more relationships between Node Types or Node Templates.
-##########################################################################
-tosca.relationships.Root:
-  description: >
-    The TOSCA root Relationship Type all other TOSCA base Relationship Types
-    derive from.
-  attributes:
-    tosca_id:
-      type: string
-    tosca_name:
-      type: string
-  interfaces:
-    Configure:
-      type: tosca.interfaces.relationship.Configure
-
-tosca.relationships.DependsOn:
-  derived_from: tosca.relationships.Root
-
-tosca.relationships.HostedOn:
-  derived_from: tosca.relationships.Root
-  valid_target_types: [ tosca.capabilities.Container ]
-
-tosca.relationships.ConnectsTo:
-  derived_from: tosca.relationships.Root
-  valid_target_types: [ tosca.capabilities.Endpoint ]
-  credential:
-    type: tosca.datatypes.Credential
-    required: false
-
-tosca.relationships.AttachesTo:
-  derived_from: tosca.relationships.Root
-  valid_target_types: [ tosca.capabilities.Attachment ]
-  properties:
-    location:
-      required: true
-      type: string
-      constraints:
-        - min_length: 1
-    device:
-      required: false
-      type: string
-
-tosca.relationships.network.LinksTo:
-  derived_from: tosca.relationships.DependsOn
-  valid_target_types: [ tosca.capabilities.network.Linkable ]
-
-tosca.relationships.network.BindsTo:
-  derived_from: tosca.relationships.DependsOn
-  valid_target_types: [ tosca.capabilities.network.Bindable ]
-
-##########################################################################
-# Capability Type.
-# A Capability Type is a reusable entity that describes a kind of
-# capability that a Node Type can declare to expose.
-##########################################################################
-tosca.capabilities.Root:
-  description: >
-    The TOSCA root Capability Type all other TOSCA base Capability Types
-    derive from.
-
-tosca.capabilities.Node:
-  derived_from: tosca.capabilities.Root
-
-tosca.capabilities.Container:
-  derived_from: tosca.capabilities.Root
-  properties:
-    num_cpus:
-      required: no
-      type: integer
-      constraints:
-        - greater_or_equal: 1
-    cpu_frequency:
-      required: no
-      type: scalar-unit.frequency
-      constraints:
-        - greater_or_equal: 0.1 GHz
-    disk_size:
-      required: no
-      type: scalar-unit.size
-      constraints:
-        - greater_or_equal: 0 MB
-    mem_size:
-      required: no
-      type: scalar-unit.size
-      constraints:
-        - greater_or_equal: 0 MB
-
-tosca.capabilities.Endpoint:
-  derived_from: tosca.capabilities.Root
-  properties:
-    protocol:
-      type: string
-      default: tcp
-    port:
-      type: tosca.datatypes.network.PortDef
-      required: false
-    secure:
-      type: boolean
-      default: false
-    url_path:
-      type: string
-      required: false
-    port_name:
-      type: string
-      required: false
-    network_name:
-      type: string
-      required: false
-    initiator:
-      type: string
-      default: source
-      constraints:
-        - valid_values: [source, target, peer]
-    ports:
-      type: map
-      required: false
-      constraints:
-        - min_length: 1
-      entry_schema:
-        type: tosca.datatypes.network.PortDef
-  attributes:
-    public_address:
-      type: string
-    private_address:
-      type: string
-
-tosca.capabilities.Endpoint.Admin:
-  derived_from: tosca.capabilities.Endpoint
-  properties:
-    secure: true
-
-tosca.capabilities.Scalable:
-  derived_from: tosca.capabilities.Root
-  properties:
-    min_instances:
-      type: integer
-      required: yes
-      default: 1
-      description: >
-        This property is used to indicate the minimum number of instances
-        that should be created for the associated TOSCA Node Template by
-        a TOSCA orchestrator.
-    max_instances:
-      type: integer
-      required: yes
-      default: 1
-      description: >
-        This property is used to indicate the maximum number of instances
-        that should be created for the associated TOSCA Node Template by
-        a TOSCA orchestrator.
-    default_instances:
-      type: integer
-      required: no
-      description: >
-        An optional property that indicates the requested default number
-        of instances that should be the starting number of instances a
-        TOSCA orchestrator should attempt to allocate.
-        The value for this property MUST be in the range between the values
-        set for min_instances and max_instances properties.
-
-tosca.capabilities.Endpoint.Database:
-  derived_from: tosca.capabilities.Endpoint
-
-tosca.capabilities.Attachment:
-  derived_from: tosca.capabilities.Root
-
-tosca.capabilities.network.Linkable:
-  derived_from: tosca.capabilities.Root
-  description: >
-    A node type that includes the Linkable capability indicates that it can
-    be pointed by tosca.relationships.network.LinksTo relationship type, which
-    represents an association relationship between Port and Network node types.
-
-tosca.capabilities.network.Bindable:
-  derived_from: tosca.capabilities.Root
-  description: >
-    A node type that includes the Bindable capability indicates that it can
-    be pointed by tosca.relationships.network.BindsTo relationship type, which
-    represents a network association relationship between Port and Compute node
-    types.
-
-tosca.capabilities.OperatingSystem:
-  derived_from: tosca.capabilities.Root
-  properties:
-    architecture:
-      required: yes
-      default: x86_64
-      type: string
-      description: >
-        The host Operating System (OS) architecture.
-    type:
-      required: yes
-      type: string
-      description: >
-        The host Operating System (OS) type.
-    distribution:
-      required: no
-      type: string
-      description: >
-        The host Operating System (OS) distribution. Examples of valid values
-        for an “type” of “Linux” would include:
-        debian, fedora, rhel and ubuntu.
-    version:
-      required: no
-      type: string
-      description: >
-        The host Operating System version.
-
-##########################################################################
- # Interfaces Type.
- # The Interfaces element describes a list of one or more interface
- # definitions for a modelable entity (e.g., a Node or Relationship Type)
- # as defined within the TOSCA Simple Profile specification.
-##########################################################################
-tosca.interfaces.node.lifecycle.Standard:
-  create:
-    description: Standard lifecycle create operation.
-  configure:
-    description: Standard lifecycle configure operation.
-  start:
-    description: Standard lifecycle start operation.
-  stop:
-    description: Standard lifecycle stop operation.
-  delete:
-    description: Standard lifecycle delete operation.
-
-tosca.interfaces.relationship.Configure:
-  pre_configure_source:
-    description: Operation to pre-configure the source endpoint.
-  pre_configure_target:
-    description: Operation to pre-configure the target endpoint.
-  post_configure_source:
-    description: Operation to post-configure the source endpoint.
-  post_configure_target:
-    description: Operation to post-configure the target endpoint.
-  add_target:
-    description: Operation to add a target node.
-  remove_target:
-    description: Operation to remove a target node.
-  add_source: >
-    description: Operation to notify the target node of a source node which
-    is now available via a relationship.
-    description:
-  target_changed: >
-    description: Operation to notify source some property or attribute of the
-    target changed
-
-##########################################################################
- # Data Type.
- # A Datatype is a complex data type declaration which contains other
- # complex or simple data types.
-##########################################################################
-tosca.datatypes.network.NetworkInfo:
-  properties:
-    network_name:
-      type: string
-    network_id:
-      type: string
-    addresses:
-      type: list
-      entry_schema:
-        type: string
-
-tosca.datatypes.network.PortInfo:
-  properties:
-    port_name:
-      type: string
-    port_id:
-      type: string
-    network_id:
-      type: string
-    mac_address:
-      type: string
-    addresses:
-      type: list
-      entry_schema:
-        type: string
-
-tosca.datatypes.network.PortDef:
-  type: integer
-  constraints:
-    - in_range: [ 1, 65535 ]
-
-tosca.datatypes.network.PortSpec:
-  properties:
-    protocol:
-      type: string
-      required: true
-      default: tcp
-      constraints:
-        - valid_values: [ udp, tcp, igmp ]
-    target:
-      type: list
-      entry_schema:
-        type: PortDef
-    target_range:
-      type: range
-      constraints:
-        - in_range: [ 1, 65535 ]
-    source:
-      type: list
-      entry_schema:
-        type: PortDef
-    source_range:
-      type: range
-      constraints:
-        - in_range: [ 1, 65535 ]
-
-tosca.datatypes.Credential:
-  properties:
-    protocol:
-      type: string
-    token_type:
-      type: string
-    token:
-      type: string
-    keys:
-      type: map
-      entry_schema:
-        type: string
-    user:
-      type: string
-      required: false
-
-##########################################################################
- # Artifact Type.
- # An Artifact Type is a reusable entity that defines the type of one or more
- # files which Node Types or Node Templates can have dependent relationships
- # and used during operations such as during installation or deployment.
-##########################################################################
-tosca.artifacts.Root:
-  description: >
-    The TOSCA Artifact Type all other TOSCA Artifact Types derive from
-  properties:
-    version: version
-
-tosca.artifacts.File:
-  derived_from: tosca.artifacts.Root
-
-tosca.artifacts.Deployment:
-  derived_from: tosca.artifacts.Root
-  description: TOSCA base type for deployment artifacts
-
-tosca.artifacts.Deployment.Image:
-  derived_from: tosca.artifacts.Deployment
-
-tosca.artifacts.Deployment.Image.VM:
-  derived_from: tosca.artifacts.Deployment.Image
-
-tosca.artifacts.Implementation:
-  derived_from: tosca.artifacts.Root
-  description: TOSCA base type for implementation artifacts
-
-tosca.artifacts.impl.Bash:
-  derived_from: tosca.artifacts.Implementation
-  description: Script artifact for the Unix Bash shell
-  mime_type: application/x-sh
-  file_ext: [ sh ]
-
-tosca.artifacts.impl.Python:
-  derived_from: tosca.artifacts.Implementation
-  description: Artifact for the interpreted Python language
-  mime_type: application/x-python
-  file_ext: [ py ]
-
-tosca.artifacts.Deployment.Image.Container.Docker:
-  derived_from: tosca.artifacts.Deployment.Image
-  description: Docker container image
-
-tosca.artifacts.Deployment.Image.VM.ISO:
-  derived_from: tosca.artifacts.Deployment.Image
-  description: Virtual Machine (VM) image in ISO disk format
-  mime_type: application/octet-stream
-  file_ext: [ iso ]
-
-tosca.artifacts.Deployment.Image.VM.QCOW2:
-  derived_from: tosca.artifacts.Deployment.Image
-  description: Virtual Machine (VM) image in QCOW v2 standard disk format
-  mime_type: application/octet-stream
-  file_ext: [ qcow2 ]
diff --git a/xos/tosca/destroy.py b/xos/tosca/destroy.py
deleted file mode 100644
index e4e8ce1..0000000
--- a/xos/tosca/destroy.py
+++ /dev/null
@@ -1,52 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import os
-import sys
-
-# add the parent directory to sys.path
-import os,sys,inspect
-currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
-parentdir = os.path.dirname(currentdir)
-sys.path.append(parentdir)
-
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
-import django
-django.setup()
-
-from core.models import User
-from tosca.engine import XOSTosca
-
-def main():
-    if len(sys.argv)<3:
-        print "Syntax: destroy.py <username> <yaml-template-name>"
-        sys.exit(-1)
-
-    username = sys.argv[1]
-    template_name = sys.argv[2]
-
-    u = User.objects.get(email=username)
-
-    if template_name=="-":
-        tosca_source = sys.stdin.read()
-    else:
-        tosca_source = file(template_name).read()
-
-    xt = XOSTosca(tosca_source, parent_dir=currentdir, log_to_console=True)
-    xt.destroy(u)
-
-if __name__=="__main__":
-    main()
diff --git a/xos/tosca/doctemplates/html/node_type.html b/xos/tosca/doctemplates/html/node_type.html
deleted file mode 100644
index 7e5e2c2..0000000
--- a/xos/tosca/doctemplates/html/node_type.html
+++ /dev/null
@@ -1,64 +0,0 @@
-
-<!--
-Copyright 2017-present Open Networking Foundation
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-
-<hr>
-<h2 id="{{ node_type.node_type_name }}">{{ node_type.node_type_name }}</h2>
-<blockquote>
-
-<h3>Description:</h3>
-{% if node_type.description %}
-  <blockquote>
-  {{ node_type.description }}
-  </blockquote>
-{% endif %}
-
-<h3>Capabilities:</h3>
-{% if node_type.capabilities %}
-  <blockquote>
-  <table class="properties">
-  <tr><th>name</th><th>type</th></tr>
-  {% for capname,cap in node_type.capabilities.iteritems() %}
-     <tr><td>{{ capname }}</td><td>{{ cap.type }}</td></tr>
-  {% endfor %}
-  </table>
-  </blockquote>
-{% endif %}
-
-<h3>Properties:</h3>
-{% if node_type.properties %}
-  <blockquote>
-  <table class="properties">
-  <tr><th>name</th><th>required</th><th>type</th><th>default</th></tr>
-  {% for propname,prop in node_type.properties.iteritems() %}
-     <tr><td>{{ propname }}</td>
-         <td>{{ prop.required }}</td>
-         <td>{{ prop.type }}</td>
-         <td>{{ prop.default }}</td>
-     </tr>
-     {% if prop.description %}
-     <tr><td colspan=4 class="helptext" style="apadding-left: 30px;">{{ prop.description }}</td></tr>
-     {% endif %}
-  {% endfor %}
-  </table>
-  </blockquote>
-{% endif %}
-
-</blockquote>
-
-
-
diff --git a/xos/tosca/doctemplates/html/toscadoctemplate.html b/xos/tosca/doctemplates/html/toscadoctemplate.html
deleted file mode 100644
index 918e3e3..0000000
--- a/xos/tosca/doctemplates/html/toscadoctemplate.html
+++ /dev/null
@@ -1,98 +0,0 @@
-
-<!--
-Copyright 2017-present Open Networking Foundation
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this file except in compliance with the License.
-You may obtain a copy of the License at
-
-http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing, software
-distributed under the License is distributed on an "AS IS" BASIS,
-WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-See the License for the specific language governing permissions and
-limitations under the License.
--->
-
-
-<html><head>
-<title>XOS TOSCA Reference</title>
-
-<style>
-.properties {
-  border-collapse: collapse;
-}
-.properties td, .properties th {
-  border: 1px solid black;
-  padding: 3px 7px 2px 7px;
-}
-.properties th {
-  font-size: 1.1em;
-  padding-top: 5px;
-  padding-bottom: 4px;
-  oldbackground-color: #A7C942;
-  background-color: #2d6ca2;
-  color: #ffffff;
-}
-.helptext {
-  padding-left: 30px !important;
-  color: rgb(153, 153, 153);
-}
-</style>
-
-</head>
-<body>
-
-<h1>XOS TOSCA Reference</h1>
-
-<p>This documentation is autogenerated from the XOS Tosca custom_types
-specification (xos/tosca/custom_types/xos.m4).
-
-Table of Contents:
-<ul>
-<li>Node Types
-<ul>
-{% for node_type in node_types %}
-  {% if node_type.node_type_kind == "node" %}
-    <li><a href="#{{ node_type.node_type_name }}">{{ node_type.node_type_name }}</a></li>
-  {% endif %}
-{% endfor %}
-</li>
-</ul>
-<li><a href="#xos_relationships">Relationships</a></li>
-<li><a href="#xos_capabilities">Capabilities</a></li>
-</ul>
-
-{% for node_type in node_types %}
-  {% if node_type.node_type_kind == "node" %}
-    {% include 'node_type.html' %}
-  {% endif %}
-{% endfor %}
-
-<h3 id="xos_relationships">XOS Relationships</h3>
-<blockquote>
-<table class="properties">
-<tr><th>name</th><th>target_types</th></tr>
-{% for node_type in node_types %}
-  {% if node_type.node_type_kind == "relationship" %}
-      <tr><td>{{ node_type.node_type_name }}</td><td>{{ node_type.valid_target_types|join(', ') }}</td></tr>
-  {% endif %}
-{% endfor %}
-</table>
-</blockquote>
-
-<h3 id="xos_capabilities">XOS Capabilities</h3>
-<blockquote>
-<table class="properties">
-<tr><th>name</th></tr>
-{% for node_type in node_types %}
-  {% if node_type.node_type_kind == "capability" %}
-      <tr><td>{{ node_type.node_type_name }}</td></tr>
-  {% endif %}
-{% endfor %}
-</table>
-</blockquote>
-
-</body>
-</html>
diff --git a/xos/tosca/engine.py b/xos/tosca/engine.py
deleted file mode 100644
index b470a1f..0000000
--- a/xos/tosca/engine.py
+++ /dev/null
@@ -1,198 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import os
-import pdb
-import resources
-import sys
-import tempfile
-import traceback
-
-from toscaparser.tosca_template import ToscaTemplate
-from core.models import Slice,Instance,User,Flavor,Node,Image
-from nodeselect import XOSNodeSelector
-from imageselect import XOSImageSelector
-
-
-class XOSTosca(object):
-    def __init__(self, tosca_yaml, parent_dir=None, log_to_console = False):
-        # TOSCA will look for imports using a relative path from where the
-        # template file is located, so we have to put the template file
-        # in a specific place.
-        if not parent_dir:
-            parent_dir = os.getcwd()
-
-        tmp_pathname = None
-        try:
-            (tmp_handle, tmp_pathname) = tempfile.mkstemp(dir=parent_dir, suffix=".yaml")
-            os.write(tmp_handle, tosca_yaml)
-            os.close(tmp_handle)
-
-            self.template = ToscaTemplate(tmp_pathname)
-        except:
-            traceback.print_exc()
-            raise
-        finally:
-            if tmp_pathname:
-                os.remove(tmp_pathname)
-
-        self.log_to_console = log_to_console
-        self.log_msgs = []
-
-        self.compute_dependencies()
-
-        self.deferred_sync = []
-
-        self.ordered_nodetemplates = []
-        self.ordered_names = self.topsort_dependencies()
-        self.log("ordered_names: %s" % self.ordered_names)
-        for name in self.ordered_names:
-            if name in self.nodetemplates_by_name:
-                self.ordered_nodetemplates.append(self.nodetemplates_by_name[name])
-
-        #pdb.set_trace()
-
-    def log(self, msg):
-        if self.log_to_console:
-            print msg
-        self.log_msgs.append(msg)
-
-    def compute_dependencies(self):
-        nodetemplates_by_name = {}
-        for nodetemplate in self.template.nodetemplates:
-            nodetemplates_by_name[nodetemplate.name] = nodetemplate
-
-        self.nodetemplates_by_name = nodetemplates_by_name
-
-        for nodetemplate in self.template.nodetemplates:
-            nodetemplate.dependencies = []
-            nodetemplate.dependencies_names = []
-            for reqs in nodetemplate.requirements:
-                for (k,v) in reqs.items():
-                    name = v["node"]
-                    if (name in nodetemplates_by_name):
-                        nodetemplate.dependencies.append(nodetemplates_by_name[name])
-                        nodetemplate.dependencies_names.append(name)
-
-                    # go another level deep, as our requirements can have requirements...
-                    for sd_req in v.get("requirements",[]):
-                        for (sd_req_k, sd_req_v) in sd_req.items():
-                            name = sd_req_v["node"]
-                            if (name in nodetemplates_by_name):
-                                nodetemplate.dependencies.append(nodetemplates_by_name[name])
-                                nodetemplate.dependencies_names.append(name)
-
-
-    def topsort_dependencies(self):
-        # stolen from observer
-        g = self.nodetemplates_by_name
-
-	# Get set of all nodes, including those without outgoing edges
-	keys = set(g.keys())
-	values = set({})
-	for v in g.values():
-		values=values | set(v.dependencies_names)
-
-	all_nodes=list(keys|values)
-        steps = all_nodes
-
-	# Final order
-	order = []
-
-	# DFS stack, not using recursion
-	stack = []
-
-	# Unmarked set
-	unmarked = all_nodes
-
-	# visiting = [] - skip, don't expect 1000s of nodes, |E|/|V| is small
-
-	while unmarked:
-		stack.insert(0,unmarked[0]) # push first unmarked
-
-		while (stack):
-			n = stack[0]
-			add = True
-			try:
-				for m in g[n].dependencies_names:
-					if (m in unmarked):
-					    add = False
-					    stack.insert(0,m)
-			except KeyError:
-				pass
-			if (add):
-				if (n in steps and n not in order):
-					order.append(n)
-				item = stack.pop(0)
-				try:
-					unmarked.remove(item)
-				except ValueError:
-					pass
-
-	noorder = list(set(steps) - set(order))
-	return order + noorder
-
-    def execute(self, user):
-        for nodetemplate in self.ordered_nodetemplates:
-            self.execute_nodetemplate(user, nodetemplate)
-
-        for obj in self.deferred_sync:
-            self.log("Saving deferred sync obj %s" % obj)
-            obj.no_sync = False
-            obj.save()
-
-    def execute_nodetemplate(self, user, nodetemplate):
-        if nodetemplate.type not in resources.resources:
-            raise Exception("Nodetemplate %s's type %s is not a known resource" % (nodetemplate.name, nodetemplate.type))
-
-        cls = resources.resources[nodetemplate.type]
-        #print "work on", cls.__name__, nodetemplate.name
-        obj = cls(user, nodetemplate, self)
-        obj.create_or_update()
-        self.deferred_sync = self.deferred_sync + obj.deferred_sync
-
-    def destroy(self, user):
-        nodetemplates = self.ordered_nodetemplates
-        models = []
-        for nodetemplate in nodetemplates:
-            if nodetemplate.type in resources.resources:
-                cls = resources.resources[nodetemplate.type]
-                obj = cls(user, nodetemplate, self)
-                for model in obj.get_existing_objs():
-                    models.append( (obj, model) )
-        models.reverse()
-        for (resource,model) in models:
-            resource.delete(model)
-
-    def name_to_xos_class(self, user, name):
-        nt = self.nodetemplates_by_name.get(name)
-        if not nt:
-            raise Exception("failed to find nodetemplate %s" % name)
-
-        cls = resources.resources.get(nt.type)
-        if not cls:
-            raise Exception("nodetemplate %s's type does not resolve to a known resource type" % name)
-
-        return (nt, cls, cls.xos_model)
-
-    def name_to_xos_model(self, user, name):
-        (nt, cls, model_class) = self.name_to_xos_class(user, name)
-        obj = cls(user, nt, self)
-        existing_objs = obj.get_existing_objs()
-        if not existing_objs:
-            raise Exception("failed to find xos %s %s" % (cls.__name__, name))
-        return existing_objs[0]
-
diff --git a/xos/tosca/flavorselect.py b/xos/tosca/flavorselect.py
deleted file mode 100644
index b03151b..0000000
--- a/xos/tosca/flavorselect.py
+++ /dev/null
@@ -1,55 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import os
-import sys
-
-from core.models import Slice,Instance,User,Flavor,Node,Image
-
-class XOSFlavorSelector(object):
-    def __init__(self, user, mem_size=None, num_cpus=None, disk_size=None):
-        self.user = user
-        self.mem_size = self.get_mb(mem_size)
-        self.num_cpus = int(num_cpus)
-        self.disk_size = self.get_gb(disk_size)
-
-    def get_gb(self, s):
-        if "GB" in s:
-            return int(s.split("GB")[0].strip())
-        if "MB" in s:
-            return int(s.split("MB")[0].strip())/1024
-        return int(s)
-
-    def get_mb(self, s):
-        if "GB" in s:
-            return int(s.split("GB")[0].strip())*1024
-        if "MB" in s:
-            return int(s.split("MB")[0].strip())
-        return int(s)
-
-    def get_flavor(self):
-        flavor = "m1.tiny"
-        if (self.mem_size>512) or (self.disk_size>1):
-            flavor = "m1.small"
-        if (self.mem_size>2048) or (self.disk_size>20) or (self.num_cpus>1):
-            flavor = "m1.medium"
-        if (self.mem_size>4096) or (self.disk_size>40) or (self.num_cpus>2):
-            flavor = "m1.large"
-        if (self.mem_size>8192) or (self.disk_size>80) or (self.num_cpus>4):
-            flavor = "m1.xlarge"
-
-        return Flavor.objects.get(name=flavor)
-
diff --git a/xos/tosca/imageselect.py b/xos/tosca/imageselect.py
deleted file mode 100644
index a861180..0000000
--- a/xos/tosca/imageselect.py
+++ /dev/null
@@ -1,49 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import os
-import sys
-
-from core.models import User,Image
-
-class XOSImageSelector(object):
-    def __init__(self, user, distribution=None, type=None, architecture=None, version=None):
-        self.user = user
-
-    def get_allowed_images(self):
-        # TODO: logic to get images that the user can use
-        nodes = Image.objects.all()
-        return nodes
-
-    def get_image(self):
-        images = self.get_allowed_images()
-
-        # TODO: pick image based on parameters
-
-        found_imgs=images.filter(name="Ubuntu 14.04 LTS")   # portal
-        if found_imgs:
-            return found_imgs[0]
-
-        found_imgs=images.filter(name="Ubuntu-14.04-LTS")    # demo
-        if found_imgs:
-            return found_imgs[0]
-
-        found_imgs=images.filter(name="trusty-server-multi-nic")    # demo
-        if found_imgs:
-            return found_imgs[0]
-
-        raise Exception("Failed to find an acceptable image")
-
diff --git a/xos/tosca/makedocs.py b/xos/tosca/makedocs.py
deleted file mode 100644
index e9ef4dc..0000000
--- a/xos/tosca/makedocs.py
+++ /dev/null
@@ -1,78 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import jinja2
-import os
-import sys
-import yaml
-import pdb
-
-# add the parent directory to sys.path
-import os,sys,inspect
-currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
-parentdir = os.path.dirname(currentdir)
-sys.path.append(parentdir)
-
-"""
-{'derived_from': 'tosca.nodes.Root', 'capabilities': {'scalable': {'type': 'tosca.capabilities.Scalable'},
-'service': {'type': 'tosca.capabilities.xos.Service'}}, 'properties': {'icon_url': {'required': False,
-'type': 'string'}, 'public_key': {'required': False, 'type': 'string'}, 'kind': {'default': 'generic',
-'type': 'string'}, 'published': {'default': True, 'type': 'boolean'}, 'view_url': {'required': False, 'type': 'string'}, 'enabled': {'default': True, 'type': 'boolean'}, 'versionNumber': {'required': False, 'type': 'string'}}}
-"""
-
-class ToscaDocumenter(object):
-    def __init__(self, fn="./custom_types/xos.yaml", templatedir="./doctemplates/html", templatename="toscadoctemplate.html", destfn="tosca_reference.html"):
-        self.env = jinja2.Environment(loader=jinja2.FileSystemLoader(templatedir))
-
-        self.node_types = {}
-        self.root_types = yaml.load(file("definitions/TOSCA_definition_1_0.yaml").read())
-        for x in self.root_types.keys():
-            if x in ["tosca.nodes.Compute", "tosca.nodes.network.Network"]:
-                self.node_types[x] = self.root_types[x]
-
-        self.custom_types = yaml.load(file(fn).read())
-        self.node_types.update(self.custom_types.get("node_types"))
-
-        self.destfn = destfn
-        self.templatename = templatename
-
-    def run(self):
-        node_types=[]
-        for k in sorted(self.node_types.keys()):
-            nt = self.node_types[k]
-            nt["node_type_name"] = k
-
-            derived_from = nt.get("derived_from","")
-
-            if derived_from.startswith("tosca.nodes"):
-                nt["node_type_kind"] = "node"
-            elif derived_from.startswith("tosca.capabilities"):
-                nt["node_type_kind"] = "capability"
-            elif derived_from.startswith("tosca.relationships"):
-                nt["node_type_kind"] = "relationship"
-
-            node_types.append(nt)
-
-        template = self.env.get_template(self.templatename)
-
-        self.destf = open(self.destfn,"w")
-        self.destf.write(template.render(node_types=node_types))
-
-def main():
-    ToscaDocumenter().run()
-
-if __name__=="__main__":
-    main()
diff --git a/xos/tosca/nodeselect.py b/xos/tosca/nodeselect.py
deleted file mode 100644
index fdb4b7b..0000000
--- a/xos/tosca/nodeselect.py
+++ /dev/null
@@ -1,42 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import os
-import sys
-
-from core.models import Slice,Instance,User,Flavor,Node,Image
-
-class XOSNodeSelector(object):
-    def __init__(self, user, mem_size=None, num_cpus=None, disk_size=None, hostname = None):
-        self.user = user
-        self.hostname = None
-
-    def get_allowed_nodes(self):
-        # TODO: logic to get nodes that the user can use
-        nodes = Node.objects.all()
-
-        if self.hostname:
-            nodes = nodes.filter(name = self.hostname)
-
-        return nodes
-
-    def get_nodes(self, quantity):
-        nodes = self.get_allowed_nodes()
-        # TODO: filter out any nonfunctional nodes
-        # sort by fewest number of instances
-        nodes = sorted(nodes, key=lambda node: node.instances.all().count())
-        return nodes[:quantity]
-
diff --git a/xos/tosca/resources/__init__.py b/xos/tosca/resources/__init__.py
deleted file mode 100644
index a371b08..0000000
--- a/xos/tosca/resources/__init__.py
+++ /dev/null
@@ -1,58 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from django.conf.urls import patterns, url
-from rest_framework.routers import DefaultRouter
-import os, sys
-import inspect
-import importlib
-
-# XXX based on core/dashboard/views/__init__.py
-
-# Find all modules in the current directory that have descendents of the XOSResource
-# object, and add them as globals to this module. Also, build up a list of urls
-# based on the "url" field of the view classes.
-
-resources = {}
-
-sys_path_save = sys.path
-try:
-    # __import__() and importlib.import_module() both import modules from
-    # sys.path. So we make sure that the path where we can find the views is
-    # the first thing in sys.path.
-    view_dir = os.path.dirname(os.path.abspath(__file__))
-    sys.path = [view_dir] + sys.path
-    view_urls = []
-    for fn in os.listdir(view_dir):
-        pathname = os.path.join(view_dir,fn)
-        if os.path.isfile(pathname) and fn.endswith(".py") and (fn!="__init__.py"):
-            module = __import__(fn[:-3])
-            for classname in dir(module):
-                c = getattr(module, classname, None)
-
-                if inspect.isclass(c) and (getattr(c,"xos_base_class",None)=="XOSResource") and (classname not in globals()):
-                    provides = getattr(c, "provides", None)
-                    if provides:
-                        globals()[classname] = c
-                        if isinstance(provides, basestring):
-                            resources[provides] = c
-                        else:
-                            # allow provides= to be a list
-                            for p in provides:
-                                resources[p] = c
-finally:
-    sys.path = sys_path_save
diff --git a/xos/tosca/resources/addresspool.py b/xos/tosca/resources/addresspool.py
deleted file mode 100644
index 1894b06..0000000
--- a/xos/tosca/resources/addresspool.py
+++ /dev/null
@@ -1,73 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import socket
-import struct
-
-from xosresource import XOSResource
-from core.models import AddressPool
-
-class XOSAddressPool(XOSResource):
-    provides = "tosca.nodes.AddressPool"
-    xos_model = AddressPool
-    copyin_props = ["addresses", "gateway_ip", "gateway_mac"]
-
-    def expand_cidr(self, cidr):
-        (network, bits) = cidr.split("/")
-        network=network.strip()
-        bits=int(bits.strip())
-
-        dest = []
-
-        netmask = (~(pow(2,32-bits)-1) & 0xFFFFFFFF)
-
-        count = pow(2, 32-bits)
-        for i in range(2, count-1):
-            ip = struct.unpack("!L", socket.inet_aton(network))[0]
-            ip = ip & netmask | i
-            dest.append( socket.inet_ntoa(struct.pack("!L", ip)) )
-
-        return (dest, bits)
-
-    def get_xos_args(self):
-        args = super(XOSAddressPool, self).get_xos_args()
-
-        if "addresses" in args:
-            addr = args["addresses"]
-            if "," in addr:
-                raise Exception("Only one cidr per AddressPool")
-            if not "/" in addr:
-                raise Exception("AddressPool addresses must be a cidr")
-            (cidr_addrs, cidr_netbits) = self.expand_cidr(addr)
-            args["addresses"] = " ".join(cidr_addrs)
-            args["cidr"] = addr
-
-#        if "addresses" in args:
-#            dest = []
-#            for addr in args["addresses"].split():
-#                addr=addr.strip()
-#                if "/" in addr:
-#                    (cidr_addrs, cidr_netbits) = self.expand_cidr(addr)
-#                    dest.extend(cidr_addrs)
-#                else:
-#                    dest.append(addr)
-#            args["addresses"] = " ".join(dest)
-
-        return args
-
-
-
-
diff --git a/xos/tosca/resources/compute.py b/xos/tosca/resources/compute.py
deleted file mode 100644
index 84321b9..0000000
--- a/xos/tosca/resources/compute.py
+++ /dev/null
@@ -1,137 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Slice,Instance,User,Flavor,Node,Image
-from nodeselect import XOSNodeSelector
-from imageselect import XOSImageSelector
-from flavorselect import XOSFlavorSelector
-
-class XOSCompute(XOSResource):
-    provides = ["tosca.nodes.Compute", "tosca.nodes.Compute.Container"]
-    xos_model = Instance
-
-    def select_compute_node(self, user, v, hostname=None):
-        mem_size = v.get_property_value("mem_size")
-        num_cpus = v.get_property_value("num_cpus")
-        disk_size = v.get_property_value("disk_size")
-
-        flavor = XOSFlavorSelector(user, mem_size=mem_size, num_cpus=num_cpus, disk_size=disk_size).get_flavor()
-
-        compute_node = XOSNodeSelector(user, mem_size=mem_size, num_cpus=num_cpus, disk_size=disk_size, hostname=hostname).get_nodes(1)[0]
-
-        return (compute_node, flavor)
-
-    def select_image(self, user, v):
-        distribution = v.get_property_value("distribution")
-        version = v.get_property_value("version")
-        type = v.get_property_value("type")
-        architecture = v.get_property_value("architecture")
-
-        return XOSImageSelector(user, distribution=distribution, version=version, type=type, architecture=architecture).get_image()
-
-    def get_xos_args(self, name=None, index=None):
-        nodetemplate = self.nodetemplate
-
-        if not name:
-            name = self.obj_name
-
-        args = {"name": name}
-
-        host=None
-        flavor=None
-        image=None
-
-        sliceName = self.get_requirement("tosca.relationships.MemberOfSlice", throw_exception=True)
-        slice = self.get_xos_object(Slice, name=sliceName)
-
-        # locate it one the same host as some other instance
-        colocate_host = None
-        colocate_instance_name = self.get_requirement("tosca.relationships.SameHost")
-        if index is not None:
-            colocate_instance_name = "%s-%d" % (colocate_instance_name, index)
-        colocate_instances = Instance.objects.filter(name=colocate_instance_name)
-        if colocate_instances:
-            colocate_host = colocate_instances[0].node.name
-            self.info("colocating on %s" % colocate_host)
-
-        imageName = self.get_requirement("tosca.relationships.UsesImage", throw_exception=False)
-        if imageName:
-            image = self.get_xos_object(Image, name=imageName)
-
-        capabilities = nodetemplate.get_capabilities()
-        for (k,v) in capabilities.items():
-            if (k=="host") and (not host):
-                (compute_node, flavor) = self.select_compute_node(self.user, v, hostname=colocate_host)
-            elif (k=="os") and (not image):
-                image = self.select_image(self.user, v)
-
-        if not compute_node:
-            raise Exception("Failed to pick a host")
-        if not image:
-            raise Exception("Failed to pick an image")
-        if not flavor:
-            raise Exception("Failed to pick a flavor")
-
-        args["image"] = image
-        args["slice"] = slice
-        args["flavor"] = flavor
-        args["node"] = compute_node
-        args["deployment"] = compute_node.site_deployment.deployment
-
-        if nodetemplate.type == "tosca.nodes.Compute.Container":
-            args["isolation"] = "container"
-
-        return args
-
-    def create(self, name = None, index = None):
-        xos_args = self.get_xos_args(name=name, index=index)
-        instance = Instance(**xos_args)
-        instance.caller = self.user
-        instance.no_sync = True
-        instance.save()
-        self.deferred_sync.append(instance)
-
-        self.info("Created Instance '%s' on node '%s' using flavor '%s' and image '%s'" %
-                  (str(instance), str(instance.node), str(instance.flavor), str(instance.image)))
-
-    def create_or_update(self):
-        scalable = self.get_scalable()
-
-        if scalable.get("max_instances",1) > 1:
-            for i in range(0, scalable.get("default_instances",1)):
-                name = "%s-%d" % (self.obj_name, i)
-                existing_instances = Instance.objects.filter(name=name)
-                if existing_instances:
-                    self.info("%s %s already exists" % (self.xos_model.__name__, name))
-                    self.update(existing_instances[0])
-                else:
-                    self.create(name, index=i)
-        else:
-            super(XOSCompute,self).create_or_update()
-
-    def get_existing_objs(self):
-        scalable = self.get_scalable()
-
-        if scalable.get("max_instances",1) > 1:
-            existing_instances = []
-            for i in range(0, scalable.get("default_instances",1)):
-                name = "%s-%d" % (self.obj_name, i)
-                existing_instances = existing_instances + list(Instance.objects.filter(name=name))
-            return existing_instances
-        else:
-            return super(XOSCompute,self).get_existing_objs()
-
diff --git a/xos/tosca/resources/controller.py b/xos/tosca/resources/controller.py
deleted file mode 100644
index d297851..0000000
--- a/xos/tosca/resources/controller.py
+++ /dev/null
@@ -1,58 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import User,Controller,Deployment
-
-class XOSController(XOSResource):
-    provides = "tosca.nodes.Controller"
-    xos_model = Controller
-    copyin_props = ["backend_type", "version", "auth_url", "admin_user", "admin_password", "admin_tenant", "domain", "rabbit_host", "rabbit_user", "rabbit_password"]
-
-    def get_xos_args(self):
-        args = super(XOSController, self).get_xos_args()
-
-        deployment_name = self.get_requirement("tosca.relationships.ControllerDeployment")
-        if deployment_name:
-            args["deployment"] = self.get_xos_object(Deployment, name=deployment_name)
-
-        return args
-
-    def create(self):
-        xos_args = self.get_xos_args()
-
-        if not xos_args.get("deployment",None):
-            raise Exception("Controller must have a deployment")
-
-        controller = Controller(**xos_args)
-        controller.caller = self.user
-        controller.save()
-
-        self.info("Created Controller '%s'" % (str(controller), ))
-
-        self.postprocess(controller)
-
-    def delete(self, obj):
-        if obj.controllersite.exists():
-            self.info("Controller %s has active sites; skipping delete" % obj.name)
-            return
-        for sd in obj.sitedeployments.all():
-            if sd.nodes.exists():
-                self.info("Controller %s has active nodes; skipping delete" % obj.name)
-                return
-
-
-
diff --git a/xos/tosca/resources/deployment.py b/xos/tosca/resources/deployment.py
deleted file mode 100644
index fab19bb..0000000
--- a/xos/tosca/resources/deployment.py
+++ /dev/null
@@ -1,50 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import User,Deployment,DeploymentRole,DeploymentPrivilege,Image,ImageDeployments,Flavor
-
-class XOSDeployment(XOSResource):
-    provides = "tosca.nodes.Deployment"
-    xos_model = Deployment
-    copyin_props = ["accessControl"]
-
-    def get_xos_args(self):
-        args = super(XOSDeployment, self).get_xos_args()
-
-        return args
-
-    def postprocess(self, obj):
-        # Note: support for Flavors and Images is dropped
-
-        rolemap = ( ("tosca.relationships.AdminPrivilege", "admin"), )
-        self.postprocess_privileges(DeploymentRole, 'Deployment', rolemap, obj)
-
-    def delete(self, obj):
-        if obj.sites.exists():
-            self.info("Deployment %s has active sites; skipping delete" % obj.name)
-            return
-        for sd in obj.sitedeployments.all():
-            if sd.nodes.exists():
-                self.info("Deployment %s has active nodes; skipping delete" % obj.name)
-                return
-        #if obj.nodes.exists():
-        #    self.info("Deployment %s has active nodes; skipping delete" % obj.name)
-        #    return
-        super(XOSDeployment, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/deploymentrole.py b/xos/tosca/resources/deploymentrole.py
deleted file mode 100644
index 8c63369..0000000
--- a/xos/tosca/resources/deploymentrole.py
+++ /dev/null
@@ -1,32 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import User, Deployment, DeploymentRole
-
-class XOSDeploymentRole(XOSResource):
-    provides = "tosca.nodes.DeploymentRole"
-    xos_model = DeploymentRole
-    name_field = "role"
-
-    def get_xos_args(self):
-        args = super(XOSDeploymentRole, self).get_xos_args()
-
-        return args
-
-    def delete(self, obj):
-        super(XOSDeploymentRole, self).delete(obj)
-
diff --git a/xos/tosca/resources/flavor.py b/xos/tosca/resources/flavor.py
deleted file mode 100644
index 86e2a0b..0000000
--- a/xos/tosca/resources/flavor.py
+++ /dev/null
@@ -1,42 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import User, Deployment, Flavor
-
-class XOSFlavor(XOSResource):
-    provides = "tosca.nodes.Flavor"
-    xos_model = Flavor
-    copyin_props = ["flavor"]
-
-    def get_xos_args(self):
-        args = super(XOSFlavor, self).get_xos_args()
-
-        # Support the default where the OpenStack flavor is the same as the
-        # flavor name
-        if "flavor" not in args:
-            args["flavor"] = args["name"]
-
-        return args
-
-    def delete(self, obj):
-        if obj.instance_set.exists():
-            self.info("Flavor %s has active instances; skipping delete" % obj.name)
-            return
-        super(XOSFlavor, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/gui_extensions.py b/xos/tosca/resources/gui_extensions.py
deleted file mode 100644
index b9e9bff..0000000
--- a/xos/tosca/resources/gui_extensions.py
+++ /dev/null
@@ -1,24 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import XOSGuiExtension
-
-
-class XOSXOSGuiExtension(XOSResource):
-    provides = "tosca.nodes.XOSGuiExtension"
-    xos_model = XOSGuiExtension
-    copyin_props = ["name", "files"]
diff --git a/xos/tosca/resources/image.py b/xos/tosca/resources/image.py
deleted file mode 100644
index 5c69946..0000000
--- a/xos/tosca/resources/image.py
+++ /dev/null
@@ -1,46 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import User, Deployment, Image
-
-class XOSImage(XOSResource):
-    provides = "tosca.nodes.Image"
-    xos_model = Image
-    copyin_props = ["disk_format", "container_format", "path", "kind", "tag"]
-
-    def get_xos_args(self):
-        args = super(XOSImage, self).get_xos_args()
-
-        return args
-
-    def create(self):
-        xos_args = self.get_xos_args()
-
-        image = Image(**xos_args)
-        image.caller = self.user
-        image.save()
-
-        self.info("Created Image '%s'" % (str(image), ))
-
-    def delete(self, obj):
-        if obj.instances.exists():
-            self.info("Instance %s has active instances; skipping delete" % obj.name)
-            return
-        super(XOSImage, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/interfacetype.py b/xos/tosca/resources/interfacetype.py
deleted file mode 100644
index bab4842..0000000
--- a/xos/tosca/resources/interfacetype.py
+++ /dev/null
@@ -1,27 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import InterfaceType
-
-class XOSInterfaceType(XOSResource):
-    provides = "tosca.nodes.InterfaceType"
-    xos_model = InterfaceType
-    copyin_props = ["direction"]
-
-    def get_existing_objs(self):
-        args = self.get_xos_args()
-        return self.xos_model.objects.filter(**{self.name_field: self.obj_name, "direction": args["direction"]})
diff --git a/xos/tosca/resources/network.py b/xos/tosca/resources/network.py
deleted file mode 100644
index 6eba57d..0000000
--- a/xos/tosca/resources/network.py
+++ /dev/null
@@ -1,137 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Slice,User,Network,NetworkTemplate,NetworkSlice,Service,ServiceInstanceLink
-
-class XOSNetwork(XOSResource):
-    provides = ["tosca.nodes.network.Network", "tosca.nodes.network.Network.XOS"]
-    xos_model = Network
-    copyin_props = ["ports", "labels"]
-
-    def get_xos_args(self):
-        args = super(XOSNetwork, self).get_xos_args()
-
-        args["autoconnect"] = False
-
-        slice_name = self.get_requirement("tosca.relationships.MemberOfSlice")
-        if slice_name:
-            args["owner"] = self.get_xos_object(Slice, name=slice_name)
-
-        net_template_name = self.get_requirement("tosca.relationships.UsesNetworkTemplate")
-        if net_template_name:
-            args["template"] = self.get_xos_object(NetworkTemplate, name=net_template_name)
-
-        if self.nodetemplate.type == "tosca.nodes.network.Network.XOS":
-            # copy simple string properties from the template into the arguments
-            for prop in ["ports", "labels", "permit_all_slices"]:
-                v = self.get_property(prop)
-                if v:
-                    args[prop] = v
-        else:
-            # tosca.nodes.network.Network is not as rich as an XOS network. So
-            # we have to manually fill in some defaults.
-            args["permit_all_slices"] = True
-
-        cidr = self.get_property_default("cidr", None)
-        if cidr:
-            args["subnet"] = cidr
-        print "DEF_RES_CIDR", cidr 
-
-        start_ip = self.get_property_default("start_ip", None)
-        if start_ip:
-            args["start_ip"] = start_ip 
-        print "DEF_RES_IP", start_ip 
-
-        end_ip = self.get_property_default("end_ip", None)
-        if end_ip:
-            args["end_ip"] = end_ip
-
-        return args
-
-    def postprocess(self, obj):
-        for sliceName in self.get_requirements("tosca.relationships.ConnectsToSlice"):
-            slice = self.get_xos_object(Slice, name=sliceName)
-            netSlices = NetworkSlice.objects.filter(network=obj, slice = slice)
-            if not netSlices:
-                self.info("Attached Network %s to Slice %s" % (obj, slice))
-                ns = NetworkSlice(network = obj, slice=slice)
-                ns.save()
-
-        # this is really for vRouter
-        for provider_service_name in self.get_requirements("tosca.relationships.TenantOfService"):
-            provider_service = self.get_xos_object(Service, name=provider_service_name)
-
-            existing_links = ServiceInstanceLink.objects.filter(subscriber_network = obj, provider_service_instance__owner=provider_service)
-
-            if existing_links:
-                self.info("Tenancy relationship from %s to %s already exists" % (str(obj), str(provider_service)))
-            else:
-                # TODO: Break hardcoded dependencies
-                # TODO: Rethink relationship between networks and vrouter tenants
-                if provider_service.kind == "vROUTER":
-                    # DEPRECATED
-                    from services.vrouter.models import VRouterService
-                    si = VRouterService.objects.get(id=provider_service.id).get_tenant(address_pool_name="addresses_"+obj.name)
-                elif provider_service.kind == "addressmanager":
-                    from services.addressmanager.models import AddressManagerService
-                    si = AddressManagerService.objects.get(id=provider_service.id).get_service_instance(address_pool_name="addresses_"+obj.name)
-                else:
-                    # Hardcoded dependency, will be obsoleted by new Tosca engine
-                    raise Exception(
-                        "The only network tenancy relationships that are allowed are to vRouter and AddressManager services")
-
-                si.save()
-                link = ServiceInstanceLink(provider_service_instance=si, subscriber_network=obj)
-                link.save()
-
-                obj.subnet = si.cidr
-
-                self.info("Created Tenancy relationship from %s to %s" % (str(obj), str(provider_service)))
-
-
-    def create(self):
-        nodetemplate = self.nodetemplate
-
-        xos_args = self.get_xos_args()
-
-        if not xos_args.get("owner", None):
-            raise Exception("Must specify slice when creating network")
-        if not xos_args.get("template", None):
-            raise Exception("Must specify network template when creating network")
-
-        # XXX TODO: investigate using transaction.atomic instead of setting
-        #   no_sync and no_policy
-
-        network = Network(**xos_args)
-        network.caller = self.user
-        network.no_sync = True        # postprocess might set the cidr
-        network.no_policy = True
-        network.save()
-
-        self.postprocess(network)
-
-        network.no_sync = False
-        network.no_policy = False
-        network.save()
-
-        self.info("Created Network '%s' owned by Slice '%s'" % (str(network), str(network.owner)))
-
-    def delete(self, obj):
-        super(XOSNetwork, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/networkparametertype.py b/xos/tosca/resources/networkparametertype.py
deleted file mode 100644
index 73a3737..0000000
--- a/xos/tosca/resources/networkparametertype.py
+++ /dev/null
@@ -1,46 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Slice,User,Network,NetworkParameterType
-
-class XOSNetworkParameterType(XOSResource):
-    provides = "tosca.nodes.NetworkParameterType"
-    xos_model = NetworkParameterType
-    copyin_props = []
-
-    def get_xos_args(self):
-        args = super(XOSNetworkParameterType, self).get_xos_args()
-
-        return args
-
-    def create(self):
-        xos_args = self.get_xos_args()
-
-        networkParameterType = NetworkParameterType(**xos_args)
-        networkParameterType.caller = self.user
-        networkParameterType.save()
-
-        self.info("Created NetworkParameterType '%s' " % (str(networkParameterType), ))
-
-    def delete(self, obj):
-        if obj.networkparameters.exists():
-            return
-
-        super(XOSNetworkParameterType, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/networktemplate.py b/xos/tosca/resources/networktemplate.py
deleted file mode 100644
index 9fbf51f..0000000
--- a/xos/tosca/resources/networktemplate.py
+++ /dev/null
@@ -1,48 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Slice,User,Network,NetworkTemplate
-
-class XOSNetworkTemplate(XOSResource):
-    provides = "tosca.nodes.NetworkTemplate"
-    xos_model = NetworkTemplate
-    copyin_props = ["visibility", "translation", "shared_network_name", "shared_network_id", "toplogy_kind", "controller_kind", "access", "vtn_kind"]
-
-    def get_xos_args(self):
-        args = super(XOSNetworkTemplate, self).get_xos_args()
-
-        return args
-
-    def create(self):
-        nodetemplate = self.nodetemplate
-
-        xos_args = self.get_xos_args()
-
-        networkTemplate = NetworkTemplate(**xos_args)
-        networkTemplate.caller = self.user
-        networkTemplate.save()
-
-        self.info("Created NetworkTemplate '%s' " % (str(networkTemplate), ))
-
-    def delete(self, obj):
-        if obj.network_set.exists():
-            return
-
-        super(XOSNetworkTemplate, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/node.py b/xos/tosca/resources/node.py
deleted file mode 100644
index 6cf930c..0000000
--- a/xos/tosca/resources/node.py
+++ /dev/null
@@ -1,71 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Node, NodeLabel, Site, Deployment, SiteDeployment
-
-class XOSNode(XOSResource):
-    provides = "tosca.nodes.Node"
-    xos_model = Node
-    copyin_props = ["bridgeId", "dataPlaneIntf", "dataPlaneIp", "hostManagementIface"]
-
-    def get_xos_args(self):
-        args = super(XOSNode, self).get_xos_args()
-        args["name"] = self.obj_name
-
-        site = None
-        siteName = self.get_requirement("tosca.relationships.MemberOfSite", throw_exception=False)
-        if siteName:
-            site = self.get_xos_object(Site, login_base=siteName)
-
-        deploymentName = self.get_requirement("tosca.relationships.MemberOfDeployment", throw_exception=False)
-        if deploymentName:
-            deployment = self.get_xos_object(Deployment, name=deploymentName)
-
-            if site:
-                siteDeployment = self.get_xos_object(SiteDeployment, site=site, deployment=deployment, throw_exception=True)
-                args["site_deployment"] = siteDeployment
-
-        return args
-
-    def postprocess(self, obj):
-        # We can't set the labels when we create a Node, because they're
-        # ManyToMany related, and the node doesn't exist yet.
-        for label_name in self.get_requirements("tosca.relationships.HasLabel"):
-            # labels.append(self.get_xos_object(NodeLabel, name=label_name))
-            label = NodeLabel.objects.get(name=label_name)
-            obj.nodelabels.add(label)
-            self.info("Added label '%s' for node '%s'" % (label_name, obj))
-
-    def create(self):
-        xos_args = self.get_xos_args()
-
-        if not xos_args.get("site_deployment", None):
-            raise Exception("Deployment is a required field of Node")
-
-        node = Node(**xos_args)
-        node.caller = self.user
-        node.save()
-
-        self.postprocess(node)
-
-        self.info("Created Node '%s' on Site '%s' Deployment '%s'" % (str(node), str(node.site_deployment.site), str(node.site_deployment.deployment)))
-
-    def delete(self, obj):
-        super(XOSNode, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/nodelabel.py b/xos/tosca/resources/nodelabel.py
deleted file mode 100644
index a317360..0000000
--- a/xos/tosca/resources/nodelabel.py
+++ /dev/null
@@ -1,23 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import NodeLabel
-
-class XOSNodeLabel(XOSResource):
-    provides = "tosca.nodes.NodeLabel"
-    xos_model = NodeLabel
-
diff --git a/xos/tosca/resources/port.py b/xos/tosca/resources/port.py
deleted file mode 100644
index d917674..0000000
--- a/xos/tosca/resources/port.py
+++ /dev/null
@@ -1,69 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Instance,User,Network,NetworkTemplate,Port
-
-class XOSPort(XOSResource):
-    provides = ["tosca.nodes.network.Port"]
-    xos_model = Port
-
-    def get_existing_objs(self):
-        # Port objects have no name, their unique key is (instance, network)
-        args = self.get_xos_args(throw_exception=False)
-        instance = args.get('instance',None)
-        network = args.get('network',None)
-        if (not instance) or (not network):
-            return []
-        return self.xos_model.objects.filter(**{'instance': instance, 'network': network})
-
-    def get_xos_args(self, throw_exception=True):
-        args = {}
-
-        instance_name = self.get_requirement("tosca.relationships.network.BindsTo")
-        if instance_name:
-            args["instance"] = self.get_xos_object(Instance, throw_exception, name=instance_name)
-
-        net_name = self.get_requirement("tosca.relationships.network.LinksTo")
-        if net_name:
-            args["network"] = self.get_xos_object(Network, throw_exception, name=net_name)
-
-        return args
-
-    def postprocess(self, obj):
-        pass
-
-    def create(self):
-        xos_args = self.get_xos_args()
-
-        if not xos_args.get("instance", None):
-            raise Exception("Must specify slver when creating port")
-        if not xos_args.get("network", None):
-            raise Exception("Must specify network when creating port")
-
-        port = Port(**xos_args)
-        port.caller = self.user
-        port.save()
-
-        self.postprocess(port)
-
-        self.info("Created Port '%s' connect instance '%s' to network %s" % (str(port), str(port.instance), str(port.network)))
-
-    def delete(self, obj):
-        super(XOSPort, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/service.py b/xos/tosca/resources/service.py
deleted file mode 100644
index 965b0fd..0000000
--- a/xos/tosca/resources/service.py
+++ /dev/null
@@ -1,49 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Service,User,ServiceDependency,AddressPool
-
-class XOSService(XOSResource):
-    provides = "tosca.nodes.Service"
-    xos_model = Service
-    copyin_props = ["view_url", "icon_url", "kind", "enabled", "published", "public_key", "private_key_fn", "versionNumber"]
-
-    def postprocess(self, obj):
-        for provider_service_name in self.get_requirements("tosca.relationships.TenantOfService"):
-            provider_service = self.get_xos_object(Service, name=provider_service_name)
-
-            existing_tenancy = ServiceDependency.objects.filter(provider_service = provider_service, subscriber_service = obj)
-            if existing_tenancy:
-                self.info("Tenancy relationship from %s to %s already exists" % (str(obj), str(provider_service)))
-            else:
-                tenancy = ServiceDependency(provider_service = provider_service,
-                                       subscriber_service = obj)
-                tenancy.save()
-
-                self.info("Created Tenancy relationship  from %s to %s" % (str(obj), str(provider_service)))
-
-        for ap_name in self.get_requirements("tosca.relationships.ProvidesAddresses"):
-            ap = self.get_xos_object(AddressPool, name=ap_name)
-            ap.service = obj
-            ap.save()
-
-    def can_delete(self, obj):
-        if obj.slices.exists():
-            self.info("Service %s has active slices; skipping delete" % obj.name)
-            return False
-        return super(XOSService, self).can_delete(obj)
-
diff --git a/xos/tosca/resources/serviceinstance.py b/xos/tosca/resources/serviceinstance.py
deleted file mode 100644
index 7b0babf..0000000
--- a/xos/tosca/resources/serviceinstance.py
+++ /dev/null
@@ -1,68 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from core.models import User, ServiceInstanceLink, Service, ServiceInstance
-
-from xosresource import XOSResource
-
-class XOSServiceInstance(XOSResource):
-    provides = ["tosca.nodes.Tenant", "tosca.nodes.ServiceInstance"]
-    xos_model = ServiceInstance
-    copyin_props = ["service_specific_id"]
-
-    def get_xos_args(self, throw_exception=True):
-        args = super(XOSServiceInstance, self).get_xos_args()
-
-        provider_name = self.get_requirement("tosca.relationships.MemberOfService", throw_exception=throw_exception)
-        if provider_name:
-            args["owner"] = self.get_xos_object(Service, throw_exception=throw_exception, name=provider_name)
-
-        return args
-
-    def get_existing_objs(self):
-        args = self.get_xos_args(throw_exception=False)
-        provider_service = args.get("owner", None)
-        service_specific_id = args.get("service_specific_id", None)
-        if (provider_service) and (service_specific_id):
-            existing_obj = self.get_xos_object(ServiceInstance, owner=provider_service, service_specific_id=service_specific_id, throw_exception=False)
-            if existing_obj:
-                return [ existing_obj ]
-        return []
-
-    def postprocess(self, obj):
-        subscriber_name = self.get_requirement("tosca.relationships.BelongsToSubscriber")
-        if subscriber_name:
-            subscriber = self.get_xos_object(ServiceInstance, throw_exception=True, name=subscriber_name)
-
-            links = ServiceInstanceLink.objects.filter(provider_service_instance = obj,
-                                                       subscriber_service_instance = subscriber)
-            if not links:
-                link = ServiceInstanceLink(provider_service_instance = obj, subscriber_service_instance = subscriber)
-                link.save()
-
-        tenant_name = self.get_requirement("tosca.relationships.BelongsToTenant")
-        if tenant_name:
-            tenant = self.get_xos_object(ServiceInstance, throw_exception=True, name=tenant_name)
-            links = ServiceInstanceLink.objects.filter(provider_service_instance = obj,
-                                                       subscriber_service_instance = tenant)
-            if not links:
-                link = ServiceInstanceLink(provider_service_instance = obj, subscriber_service_instance = tenant)
-                link.save()
-
-
-
-    def can_delete(self, obj):
-        return super(XOSServiceInstance, self).can_delete(obj)
diff --git a/xos/tosca/resources/serviceinterface.py b/xos/tosca/resources/serviceinterface.py
deleted file mode 100644
index f7f61cb..0000000
--- a/xos/tosca/resources/serviceinterface.py
+++ /dev/null
@@ -1,43 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Service, InterfaceType, ServiceInterface
-
-class XOSServiceInterface(XOSResource):
-    provides = "tosca.nodes.ServiceInterface"
-    xos_model = ServiceInterface
-    copyin_props = []
-    name_field = None
-
-    def get_xos_args(self):
-        args = super(XOSServiceInterface, self).get_xos_args()
-
-        serviceName = self.get_requirement("tosca.relationships.MemberOfService", throw_exception=True)
-        service = self.get_xos_object(Service, name=serviceName)
-        args["service"] = service
-
-        typeName = self.get_requirement("tosca.relationships.IsType", throw_exception=True)
-        interface_type = self.get_xos_object(InterfaceType, name=typeName)
-        args["interface_type"] = interface_type
-
-        return args
-
-    def get_existing_objs(self):
-        args = self.get_xos_args()
-        return self.xos_model.objects.filter(service=args["service"], interface_type=args["interface_type"])
-
-
diff --git a/xos/tosca/resources/siterole.py b/xos/tosca/resources/siterole.py
deleted file mode 100644
index eda7ab5..0000000
--- a/xos/tosca/resources/siterole.py
+++ /dev/null
@@ -1,34 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import User, Deployment, SiteRole
-
-class XOSSiteRole(XOSResource):
-    provides = "tosca.nodes.SiteRole"
-    xos_model = SiteRole
-    name_field = "role"
-
-    def get_xos_args(self):
-        args = super(XOSSiteRole, self).get_xos_args()
-
-        return args
-
-    def delete(self, obj):
-        super(XOSSiteRole, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/slice.py b/xos/tosca/resources/slice.py
deleted file mode 100644
index a1a1184..0000000
--- a/xos/tosca/resources/slice.py
+++ /dev/null
@@ -1,73 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Slice,User,Site,Network,NetworkSlice,SliceRole,SlicePrivilege,Service,Image,Flavor,Node
-
-class XOSSlice(XOSResource):
-    provides = "tosca.nodes.Slice"
-    xos_model = Slice
-    copyin_props = ["enabled", "description", "slice_url", "max_instances", "default_isolation", "default_flavor", "network", "exposed_ports"]
-
-    def get_xos_args(self):
-        args = super(XOSSlice, self).get_xos_args()
-
-        site_name = self.get_requirement("tosca.relationships.MemberOfSite", throw_exception=True)
-        site = self.get_xos_object(Site, login_base=site_name)
-        args["site"] = site
-
-        serviceName = self.get_requirement("tosca.relationships.MemberOfService", throw_exception=False)
-        if serviceName:
-            service = self.get_xos_object(Service, name=serviceName)
-            args["service"] = service
-
-        default_image_name = self.get_requirement("tosca.relationships.DefaultImage", throw_exception=False)
-        if default_image_name:
-            default_image = self.get_xos_object(Image, name=default_image_name, throw_exception=True)
-            args["default_image"] = default_image
-
-        default_flavor_name = self.get_requirement("tosca.relationships.DefaultFlavor", throw_exception=False)
-        if default_flavor_name:
-            default_flavor = self.get_xos_object(Flavor, name=default_flavor_name, throw_exception=True)
-            args["default_flavor"] = default_flavor
-
-        default_node_name = self.get_property_default("default_node", None)
-        if default_node_name:
-            default_node = self.get_xos_object(Node, name=default_node_name, throw_exception=True)
-            args["default_node"] = default_node
-
-        return args
-
-    def postprocess(self, obj):
-        for net_name in self.get_requirements("tosca.relationships.ConnectsToNetwork"):
-            net = self.get_xos_object(Network, name=net_name)
-            if not NetworkSlice.objects.filter(network=net, slice=obj):
-                ns = NetworkSlice(network=net, slice=obj)
-                ns.save()
-                self.info("Added network connection from '%s' to '%s'" % (str(obj), str(net)))
-
-        rolemap = ( ("tosca.relationships.AdminPrivilege", "admin"), ("tosca.relationships.AccessPrivilege", "access"),
-                    ("tosca.relationships.PIPrivilege", "pi"), ("tosca.relationships.TechPrivilege", "tech") )
-        self.postprocess_privileges(SliceRole, 'Slice', rolemap, obj)
-
-    def delete(self, obj):
-        if obj.instances.exists():
-            self.info("Slice %s has active instances; skipping delete" % obj.name)
-            return
-        super(XOSSlice, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/slicerole.py b/xos/tosca/resources/slicerole.py
deleted file mode 100644
index bab63e9..0000000
--- a/xos/tosca/resources/slicerole.py
+++ /dev/null
@@ -1,34 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import User, Deployment, SliceRole
-
-class XOSSliceRole(XOSResource):
-    provides = "tosca.nodes.SliceRole"
-    xos_model = SliceRole
-    name_field = "role"
-
-    def get_xos_args(self):
-        args = super(XOSSliceRole, self).get_xos_args()
-
-        return args
-
-    def delete(self, obj):
-        super(XOSSliceRole, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/tag.py b/xos/tosca/resources/tag.py
deleted file mode 100644
index c969675..0000000
--- a/xos/tosca/resources/tag.py
+++ /dev/null
@@ -1,65 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import Tag, Service
-from django.contrib.contenttypes.models import ContentType
-
-class XOSTag(XOSResource):
-    provides = "tosca.nodes.Tag"
-    xos_model = Tag
-    name_field = None
-    copyin_props = ("name", "value")
-
-    def get_xos_args(self, throw_exception=True):
-        args = super(XOSTag, self).get_xos_args()
-
-        # Find the Tosca object that this Tag is pointing to, and return its
-        # content_type and object_id, which will be used in the GenericForeignKey
-        # django relation.
-
-        target_name = self.get_requirement("tosca.relationships.TagsObject", throw_exception=throw_exception)
-        if target_name:
-            target_model = self.engine.name_to_xos_model(self.user, target_name)
-            args["content_type"] = target_model.get_content_type_key()
-            args["object_id"] = target_model.id
-
-        service_name = self.get_requirement("tosca.relationships.MemberOfService", throw_exception=throw_exception)
-        if service_name:
-            args["service"] = self.get_xos_object(Service, name=service_name)
-
-        # To uniquely identify a Tag, we must know the object that it is attached
-        # to as well as the name of the Tag.
-
-        if ("content_type" not in args) or ("object_id" not in args) or ("name" not in args):
-           if throw_exception:
-               raise Exception("Tag must specify TagsObject requirement and Name property")
-
-        return args
-
-    def get_existing_objs(self):
-        args = self.get_xos_args(throw_exception=True)
-
-        return Tag.objects.filter(content_type=args["content_type"],
-                                  object_id=args["object_id"],
-                                  name=args["name"])
-
-    def postprocess(self, obj):
-        pass
-
-    def can_delete(self, obj):
-        return super(XOSTag, self).can_delete(obj)
-
diff --git a/xos/tosca/resources/user.py b/xos/tosca/resources/user.py
deleted file mode 100644
index 9700055..0000000
--- a/xos/tosca/resources/user.py
+++ /dev/null
@@ -1,97 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import User, Site, SiteRole, SliceRole, SlicePrivilege, SitePrivilege
-
-class XOSUser(XOSResource):
-    provides = "tosca.nodes.User"
-    xos_model = User
-    name_field = "email"
-    copyin_props = ["password", "firstname", "lastname", "phone", "user_url", "public_key", "is_active", "is_admin", "is_readonly", "is_appuser", "login_page"]
-
-    def get_xos_args(self):
-        args = super(XOSUser, self).get_xos_args()
-
-        site_name = self.get_requirement("tosca.relationships.MemberOfSite")
-        if site_name:
-            args["site"] = self.get_xos_object(Site, login_base=site_name)
-
-        return args
-
-    def get_existing_objs(self):
-        return self.xos_model.objects.filter(email = self.obj_name)
-
-    def postprocess(self, obj):
-        rolemap = ( ("tosca.relationships.AdminPrivilege", "admin"), ("tosca.relationships.AccessPrivilege", "access"),
-                    ("tosca.relationships.PIPrivilege", "pi"), ("tosca.relationships.TechPrivilege", "tech") )
-        for (rel, role) in rolemap:
-            for obj_name in self.get_requirements(rel):
-                dest = self.engine.name_to_xos_model(self.user, obj_name)
-                if dest.__class__.__name__ == "Slice":
-                    role_obj = self.get_xos_object(SliceRole, role=role)
-                    if not Privilege.objects.filter(accessor_id=obj.id, permission='role:'+role_obj.role, object_id=dest.id, accessor_type='User', object_type='Slice'):
-                        sp = Privilege(accessor_id=obj.id, permission='role:'+role_obj.role, object_id=dest.id, accessor_type='User', object_type='Slice')
-                        sp.save()
-                        self.info("Added slice privilege on %s role %s for %s" % (str(dest), str(role), str(obj)))
-                elif dest.__class__.__name__ == "Site":
-                    role_obj = self.get_xos_object(SiteRole, role=role)
-                    if not Privilege.objects.filter(accessor_id=obj.id, permission='role:'+role_obj.role, object_id=dest.id, accessor_type='User', object_type='Site'):
-                        sp = SitePrivilege(accessor_id=obj.id, permission='role:'+role_obj.role, object_id=dest.id, accessor_type='User', object_type='Site')
-                        sp.save()
-                        self.info("Added site privilege on %s role %s for %s" % (str(dest), str(role), str(obj)))
-
-    def create(self):
-        xos_args = self.get_xos_args()
-
-        if not xos_args.get("site",None):
-             raise Exception("Site name must be specified when creating user")
-        if ("firstname" not in xos_args) or ("lastname" not in xos_args):
-             raise Exception("firstname and lastname must be specified when creating user")
-
-        user = User(**xos_args)
-        user.save()
-
-        self.postprocess(user)
-
-        self.info("Created User '%s'" % (str(user), ))
-
-    def update(self, obj):
-        xos_args = self.get_xos_args()
-
-        password = None
-        if "password" in xos_args:
-            # password needs to be set with set_password function
-            password = xos_args["password"]
-            del xos_args["password"]
-
-        for (k,v) in xos_args.items():
-            setattr(obj, k, v)
-
-        if password:
-            obj.set_password(password)
-
-        self.postprocess(obj)
-        obj.save()
-
-    def delete(self, obj):
-        if obj.slices.exists():
-            self.info("User %s has active slices; skipping delete" % obj.name)
-            return
-        super(XOSUser, self).delete(obj)
-
-
-
diff --git a/xos/tosca/resources/xosmodel.py b/xos/tosca/resources/xosmodel.py
deleted file mode 100644
index dcef6d7..0000000
--- a/xos/tosca/resources/xosmodel.py
+++ /dev/null
@@ -1,29 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import XOS
-
-
-class XOSXOS(XOSResource):
-    provides = "tosca.nodes.XOS"
-    xos_model = XOS
-    obsolete_props = [
-        "ui_port", "bootstrap_ui_port", "docker_project_name", "db_container_name", "redis_container_name",
-        "enable_build", "frontend_only", "source_ui_image", "extra_hosts", "no_start", "no_build",
-        "dest_ui_image", "cert_chain_name",
-    ]
-
diff --git a/xos/tosca/resources/xosresource.py b/xos/tosca/resources/xosresource.py
deleted file mode 100644
index 0a57a36..0000000
--- a/xos/tosca/resources/xosresource.py
+++ /dev/null
@@ -1,298 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import os
-import json
-import subprocess
-import sys
-
-from core.models import User, Privilege
-
-class XOSResource(object):
-    xos_base_class = "XOSResource"
-    xos_model = None
-    name_field = "name"
-    copyin_props = []
-    obsolete_props = []
-    provides = None
-
-    def __init__(self, user, nodetemplate, engine):
-        self.dirty = False
-        self.deferred_sync = []
-        self.user = user
-        self.nodetemplate = nodetemplate
-        self.engine = engine
-
-    @property
-    def full_name(self):
-        return self.nodetemplate.name
-
-    @property
-    def obj_name(self):
-        if "#" in self.nodetemplate.name:
-            return self.nodetemplate.name.split("#",1)[1]
-        else:
-            return self.nodetemplate.name
-
-    def get_all_required_node_names(self):
-        results = []
-        for reqs in self.nodetemplate.requirements:
-            for (k,v) in reqs.items():
-                results.append(v["node"])
-        return results
-
-    def get_requirements(self, relationship_name, throw_exception=False):
-        """ helper to search the list of requirements for a particular relationship
-            type.
-        """
-
-        results = []
-        for reqs in self.nodetemplate.requirements:
-            for (k,v) in reqs.items():
-                if (v["relationship"] == relationship_name):
-                    results.append(v["node"])
-
-        if (not results) and throw_exception:
-            raise Exception("Failed to find requirement in %s using relationship %s" % (self.full_name, relationship_name))
-
-        return results
-
-    def get_requirement(self, relationship_name, throw_exception=False):
-        reqs = self.get_requirements(relationship_name, throw_exception)
-        if not reqs:
-            return None
-        return reqs[0]
-
-    def get_scalable(self):
-        scalable = self.nodetemplate.get_capabilities().get("scalable", None)
-
-        min_instances = scalable.get_property_value("min_instances")
-        max_instances = scalable.get_property_value("max_instances")
-
-        # default_instances may be None, set to min_instances if not set
-        default_instances = scalable.get_property_value("default_instances")
-        if not default_instances:
-            default_instances = min_instances
-
-        return {"min_instances": min_instances,
-                "max_instances": max_instances,
-                "default_instances": default_instances}
-
-    def get_property(self, name):
-        return self.nodetemplate.get_property_value(name)
-
-    def get_property_default(self, name, default=None):
-        props = self.nodetemplate.get_properties()
-        if props and name in props.keys():
-            return props[name].value
-        return default
-
-    def get_xos_object(self, cls, throw_exception=True, **kwargs):
-        # do the same parsing that we do for objname
-        for (k,v) in kwargs.items():
-            if (k=="name") and ("#" in v):
-                kwargs[k] = v.split("#",1)[1]
-
-        objs = cls.objects.filter(**kwargs)
-        if not objs:
-            if throw_exception:
-                raise Exception("Failed to find %s filtered by %s" % (cls.__name__, str(kwargs)))
-            return None
-        return objs[0]
-
-    def get_replaces_objs(self):
-        replaces = self.get_property_default("replaces", None)
-        if replaces:
-            return self.xos_model.objects.filter(**{self.name_field: replaces})
-        else:
-            return []
-
-    def get_existing_objs(self):
-        return self.xos_model.objects.filter(**{self.name_field: self.obj_name})
-
-    def get_model_class_name(self):
-        return self.xos_model.__name__
-
-    def create_or_update(self):
-        replaces_objs = self.get_replaces_objs()
-        existing_objs = self.get_existing_objs()
-
-        if (replaces_objs and existing_objs):
-            ro = replaces_objs[0]
-            self.info("deleting %s:%s" % (self.get_model_class_name(), getattr(ro,self.name_field)))
-            ro.delete()
-
-            # in case we wanted to throw an error instead...
-            #self.error("CRITICAL ERROR: Both %s and %s exist!" % (getattr(ro,self.name_field), self.obj_name))
-            #sys.exit(-1)
-
-        if (replaces_objs and not existing_objs):
-            ro = replaces_objs[0]
-            self.info("renaming %s:%s to %s" % (self.get_model_class_name(), getattr(ro,self.name_field), self.obj_name))
-            setattr(ro, self.name_field, self.obj_name)
-            ro.save()
-            existing_objs = self.get_existing_objs()
-
-        if existing_objs:
-            if self.get_property_default("no-update", False):
-                self.info("%s:%s (%s) already exists. Skipping update due to 'no-update' property" % (self.get_model_class_name(), self.obj_name, self.full_name))
-            else:
-                self.info("%s:%s (%s) already exists" % (self.get_model_class_name(), self.obj_name, self.full_name))
-                self.update(existing_objs[0])
-        else:
-            if self.get_property_default("no-create", False):
-                self.info("%s:%s (%s) does not exist, but 'no-create' is specified" % (self.get_model_class_name(), self.obj_name, self.full_name))
-            else:
-                self.create()
-
-    def can_delete(self, obj):
-        if self.get_property_default("no-delete",False):
-            self.info("%s:%s %s is marked 'no-delete'. Skipping delete." % (self.get_model_class_name(), self.obj_name, self.full_name))
-            return False
-        return True
-
-    def postprocess_privileges(self, roleclass, modelname, rolemap, obj):
-        for (rel, role) in rolemap:
-            for email in self.get_requirements(rel):
-                role_obj = self.get_xos_object(roleclass, throw_exception=False, role=role)
-                if not role_obj:
-                    # if the role doesn't exist, make it
-                    self.info("Creating %s %s" % (roleclass.__name__, role))
-                    role_obj = roleclass(role=role)
-                    role_obj.save()
-
-                user = self.get_xos_object(User, email=email)
-                if not Privilege.objects.filter(accessor_id=user.id, accessor_type='User', object_type=modelname, permission='role:'+role_obj.role, object_id=obj.id):
-                    sp = Privilege(accessor_id=user.id, accessor_type='User', object_type=modelname, permission='role:'+role_obj.role, object_id=obj.id)
-                    sp.save()
-                    self.info("Added privilege on %s role %s for %s" % (str(obj), str(role), str(user)))
-
-    def postprocess(self, obj):
-        pass
-
-    def intrinsic_get_artifact(self, obj=None, name=None, method=None):
-        if obj!="SELF":
-            raise Exception("only SELF is supported for get_artifact first arg")
-        if method!="LOCAL_FILE":
-            raise Exception("only LOCAL_FILE is supported for get_artifact third arg")
-
-        for (k,v) in self.nodetemplate.entity_tpl.get("artifacts", {}).items():
-            if k == name:
-                if not os.path.exists(v):
-                    raise Exception("Artifact local file %s for artifact %s does not exist" % (v, k))
-                return open(v).read()
-
-        raise Exception("artifact %s not found" % name)
-
-    def intrinsic_get_script_env(self, obj=None, name=None, varname=None, method=None):
-        if obj!="SELF":
-            raise Exception("only SELF is supported for get_artifact first arg")
-        if method!="LOCAL_FILE":
-            raise Exception("only LOCAL_FILE is supported for get_artifact fourth arg")
-
-        for (k,v) in self.nodetemplate.entity_tpl.get("artifacts", {}).items():
-            if k == name:
-                if not os.path.exists(v):
-                    raise Exception("Artifact local file %s for artifact %s does not exist" % (v, k))
-                return subprocess.Popen('/bin/bash -c "source %s &> /dev/null; echo \\$%s"' % (v, varname), shell=True, stdout=subprocess.PIPE).stdout.read().strip()
-
-        raise Exception("artifact %s not found" % name)
-
-    def intrinsic_path_join(self, obj=None, name=None, varname=None, method=None):
-        if obj!="SELF":
-            raise Exception("only SELF is supported for get_artifact first arg")
-        if method!="ENV_VAR":
-            raise Exception("only ENV_VAR is supported for get_artifact fourth arg")
-
-        if not (name in os.environ):
-            raise Exception("environment variable %s not found" % name)
-
-        return os.path.join(os.environ[name], varname)
-
-    def try_intrinsic_function(self, v):
-        try:
-            jsv = v.replace("'", '"')
-            jsv = json.loads(jsv)
-        except:
-            #import traceback
-            #traceback.print_exc()
-            return v
-
-        if type(jsv)!=dict:
-            return v
-
-        if "get_artifact" in jsv:
-            return self.intrinsic_get_artifact(*jsv["get_artifact"])
-        elif "get_script_env" in jsv:
-            return self.intrinsic_get_script_env(*jsv["get_script_env"])
-        elif "path_join" in jsv:
-            return self.intrinsic_path_join(*jsv["path_join"])
-
-        return v
-
-    def get_xos_args(self):
-        args = {}
-
-        if self.name_field:
-            args[self.name_field] = self.obj_name
-
-        for prop in self.obsolete_props:
-            self.warning("WARNING: Property %s of object %s is obsolete" % (prop, self.xos_model.__class__.__name__))
-
-        # copy simple string properties from the template into the arguments
-        for prop in self.copyin_props:
-            v = self.get_property(prop)
-
-            v = self.try_intrinsic_function(v)
-
-            if v is not None:
-                args[prop] = v
-
-        return args
-
-    def save_created_obj(self, xos_obj):
-        xos_obj.save()
-
-    def create(self):
-        xos_args = self.get_xos_args()
-        xos_obj = self.xos_model(**xos_args)
-        if self.user:
-            xos_obj.caller = self.user
-
-        self.save_created_obj(xos_obj)
-
-        self.info("Created %s '%s'" % (self.xos_model.__name__,str(xos_obj)))
-
-        self.postprocess(xos_obj)
-
-    def update(self, obj):
-        xos_args = self.get_xos_args()
-        for (k,v) in xos_args.items():
-            setattr(obj, k, v)
-        self.postprocess(obj)
-        obj.save()
-
-    def delete(self, obj):
-        if (self.can_delete(obj)):
-            self.info("destroying object %s" % str(obj))
-            obj.delete(purge=True)   # XXX TODO: turn off purge before production
-
-    def info(self, s):
-        self.engine.log(s)
-
-    def warning(self, s):
-        self.engine.log(s)
-
diff --git a/xos/tosca/resources/xossite.py b/xos/tosca/resources/xossite.py
deleted file mode 100644
index 33f6464..0000000
--- a/xos/tosca/resources/xossite.py
+++ /dev/null
@@ -1,118 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from xosresource import XOSResource
-from core.models import User,Site,Deployment,Controller,SiteDeployment
-
-class XOSSite(XOSResource):
-    provides = "tosca.nodes.Site"
-    xos_model = Site
-
-    def get_xos_args(self):
-        display_name = self.get_property("display_name")
-        if not display_name:
-            display_name = self.obj_name
-
-        args = {"login_base": self.obj_name,
-                "name": display_name}
-
-        # copy simple string properties from the template into the arguments
-        for prop in ["site_url", ]:
-            v = self.get_property(prop)
-            if v:
-                args[prop] = v
-
-        return args
-
-    def get_existing_objs(self):
-        return self.xos_model.objects.filter(login_base = self.obj_name)
-
-    def postprocess(self, obj):
-        # The old way - DEPRECATED
-        for reqs in self.nodetemplate.requirements:
-            for (k,v) in reqs.items():
-                if (v["relationship"] == "tosca.relationships.SiteDeployment"):
-                    deployment_name = v["node"]
-                    deployment = self.get_xos_object(Deployment, name=deployment_name)
-
-                    controller_name = None
-                    for sd_req in v.get("requirements", []):
-                        for (sd_req_k, sd_req_v) in sd_req.items():
-                            if sd_req_v["relationship"] == "tosca.relationships.UsesController":
-                                controller_name = sd_req_v["node"]
-                    if controller_name:
-                        controller = self.get_xos_object(Controller, name=controller_name, throw_exception=True)
-                    else:
-                        controller = None
-                        # raise Exception("Controller must be specified in SiteDeployment relationship")
-
-                    existing_sitedeps = SiteDeployment.objects.filter(deployment=deployment, site=obj)
-                    if existing_sitedeps:
-                        sd = existing_sitedeps[0]
-                        if (sd.controller != controller) and (controller != None):
-                            sd.controller = controller
-                            sd.save()
-                            self.info("SiteDeployment from %s to %s updated controller" % (str(obj), str(deployment)))
-                        else:
-                            self.info("SiteDeployment from %s to %s already exists" % (str(obj), str(deployment)))
-                    else:
-                        sitedep = SiteDeployment(deployment=deployment, site=obj, controller=controller)
-                        sitedep.save()
-                        self.info("Created SiteDeployment from %s to %s" % (str(obj), str(deployment)))
-
-        # The new way
-        deployments = self.get_requirements("tosca.relationships.MemberOfDeployment")
-        if deployments and len(deployments)>1:
-            raise Exception("At most one deployment per site (%s)" % str(deployments))
-
-        controllers = self.get_requirements("tosca.relationships.UsesController")
-        if controllers and len(controllers)>1:
-            raise Exception("At most one controller per site (%s)" % str(controllers))
-
-        if controllers or deployments:
-            if (not deployments):
-                raise Exception("If you specify a controller, then you must specify a deployment")
-
-            deployment = self.get_xos_object(Deployment, name = deployments[0], throw_exception = True)
-            if controllers:
-                controller = self.get_xos_object(Controller, name = controllers[0], throw_exception = True)
-            else:
-                controller = None
-            existing_sitedeps = SiteDeployment.objects.filter(site=obj)
-            if (existing_sitedeps):
-                sd = existing_sitedeps[0]
-                if (sd.controller != controller) or (sd.deployment != deployment):
-                    sd.controller = controller
-                    sd.deployment = deployment
-                    sd.save()
-                    self.info("SiteDeployment from %s to %s updated" % (str(obj), str(deployment)))
-            else:
-                sd = SiteDeployment(deployment=deployment, site=obj, controller=controller)
-                sd.save()
-                self.info("Created SiteDeployment from %s to %s" % (str(obj), str(deployment)))
-
-    def delete(self, obj):
-        if obj.slices.exists():
-            self.info("Site %s has active slices; skipping delete" % obj.name)
-            return
-        if obj.users.exists():
-            self.info("Site %s has active users; skipping delete" % obj.name)
-            return
-        if obj.nodes.exists():
-            self.info("Site %s has active nodes; skipping delete" % obj.name)
-            return
-        super(XOSSite, self).delete(obj)
-
diff --git a/xos/tosca/run.py b/xos/tosca/run.py
deleted file mode 100755
index 73c73fc..0000000
--- a/xos/tosca/run.py
+++ /dev/null
@@ -1,55 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import os
-import sys
-import inspect
-
-# add the parent directory to sys.path
-currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
-parentdir = os.path.dirname(currentdir)
-sys.path.append(parentdir)
-
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
-import django
-django.setup()
-
-from core.models import User
-from tosca.engine import XOSTosca
-
-def main():
-    if len(sys.argv)<3:
-        print "Syntax: run.py <username> <yaml-template-name>"
-        sys.exit(-1)
-
-    username = sys.argv[1]
-    template_name = sys.argv[2]
-
-    if username.lower()=="none":
-        u=None
-    else:
-        u = User.objects.get(email=username)
-
-    if template_name=="-":
-        tosca_source = sys.stdin.read()
-    else:
-        tosca_source = file(template_name).read()
-
-    xt = XOSTosca(tosca_source, parent_dir=currentdir, log_to_console=True)
-    xt.execute(u)
-
-if __name__=="__main__":
-    main()
diff --git a/xos/tosca/samples/cdn.yaml b/xos/tosca/samples/cdn.yaml
deleted file mode 100644
index ba2a4b3..0000000
--- a/xos/tosca/samples/cdn.yaml
+++ /dev/null
@@ -1,275 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Template for deploying a single server with predefined properties.
-
-imports:
-   - custom_types/xos.yaml
-   - custom_types/cdn.yaml
-
-dsl_definitions:
-       large_compute_node: &large_compute_node
-           disk_size: 80 GB
-           mem_size: 8 GB
-           num_cpus: 4
-       small_compute_node: &small_compute_node
-           disk_size: 20 GB
-           mem_size: 2 GB
-           num_cpus: 1
-       hpc_os: &hpc_os
-           architecture: x86_64
-           type: linux
-           distribution: centos
-           version: 5.5
-
-topology_template:
-  node_templates:
-    HyperCache:
-      type: tosca.nodes.CDNService
-      description: Content Delivery Network
-      properties:
-          view_url: /admin/hpc/hpcservice/$id$/
-          icon_url: /static/primarycons_blue/network.png
-
-    mysite:
-      type: tosca.nodes.Site
-
-    mysite_cmi:
-      description: CMI Slice
-      type: tosca.nodes.Slice
-      requirements:
-          - cdn_service:
-              node: HyperCache
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
-    mysite_hpc:
-      description: HyperCache Slice
-      type: tosca.nodes.Slice
-      requirements:
-          - cdn_service:
-              node: HyperCache
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
-    mysite_dnsredir:
-      description: HyperCache Slice
-      type: tosca.nodes.Slice
-      requirements:
-          - cdn_service:
-              node: HyperCache
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
-    mysite_dnsdemux:
-      description: HyperCache Slice
-      type: tosca.nodes.Slice
-      requirements:
-          - cdn_service:
-              node: HyperCache
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
-    cmi_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        host:
-          properties: *large_compute_node
-        os:
-          properties: *hpc_os
-      requirements:
-          - slice:
-                node: mysite_cmi
-                relationship: tosca.relationships.MemberOfSlice
-
-    hpc_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        host:
-          properties: *large_compute_node
-        os:
-          properties: *hpc_os
-      requirements:
-          - slice:
-                node: mysite_hpc
-                relationship: tosca.relationships.MemberOfSlice
-
-    dnsredir_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        host:
-          properties: *small_compute_node
-        os:
-          properties: *hpc_os
-      requirements:
-          - slice:
-                node: mysite_dnsredir
-                relationship: tosca.relationships.MemberOfSlice
-
-    dnsdemux_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        host:
-          properties: *small_compute_node
-        os:
-          properties: *hpc_os
-      requirements:
-          - slice:
-                node: mysite_dnsdemux
-                relationship: tosca.relationships.MemberOfSlice
-          - colocate:
-                node: dnsredir_server
-                relationship: tosca.relationships.SameHost
-
-   # Setup the CDN Service Provider
-
-    main_service_provider:
-        type: tosca.nodes.ServiceProvider
-        requirements:
-           - hpc_service:
-                 node: HyperCache
-                 relationship: tosca.relationships.MemberOfService
-
-    # Wall Street Journal Content Provider
-
-    wsj_content:
-        type: tosca.nodes.ContentProvider
-        requirements:
-            - service_provider:
-                  node: main_service_provider
-                  relationship: tosca.relationships.MemberOfServiceProvider
-
-    www.wsj.com:
-        type: tosca.nodes.CDNPrefix
-        requirements:
-             - content_provider:
-                   node: wsj_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-             - default_origin_server:
-                   node: http_www.wsj.com
-                   relationship: tosca.relationships.DefaultOriginServer
-
-    si.wsj.net:
-        type: tosca.nodes.CDNPrefix
-        requirements:
-             - content_provider:
-                   node: wsj_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-             - default_origin_server:
-                   node: http_si.wsj.net
-                   relationship: tosca.relationships.DefaultOriginServer
-
-    s.wsj.net:
-        type: tosca.nodes.CDNPrefix
-        requirements:
-             - content_provider:
-                   node: wsj_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-             - default_origin_server:
-                   node: http_s.wsj.net
-                   relationship: tosca.relationships.DefaultOriginServer
-
-    ore.wsj.net:
-        type: tosca.nodes.CDNPrefix
-        requirements:
-             - content_provider:
-                   node: wsj_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-             - default_origin_server:
-                   node: http_ore.wsj.net
-                   relationship: tosca.relationships.DefaultOriginServer
-
-    http_www.wsj.com:
-        type: tosca.nodes.OriginServer
-        requirements:
-             - content_provider:
-                   node: wsj_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-
-    http_si.wsj.net:
-        type: tosca.nodes.OriginServer
-        requirements:
-             - content_provider:
-                   node: wsj_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-
-    http_s.wsj.net:
-        type: tosca.nodes.OriginServer
-        requirements:
-             - content_provider:
-                   node: wsj_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-
-    http_ore.wsj.net:
-        type: tosca.nodes.OriginServer
-        requirements:
-             - content_provider:
-                   node: wsj_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-
-    # ON.Lab content provider
-
-    on_lab_content:
-        type: tosca.nodes.ContentProvider
-        requirements:
-            - service_provider:
-                  node: main_service_provider
-                  relationship: tosca.relationships.MemberOfServiceProvider
-
-    downloads.onosproject.org:
-        type: tosca.nodes.CDNPrefix
-        requirements:
-             - content_provider:
-                   node: on_lab_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-             - default_origin_server:
-                   node: http_downloads.onosproject.org
-                   relationship: tosca.relationships.DefaultOriginServer
-
-    onlab.vicci.org:
-        type: tosca.nodes.CDNPrefix
-        requirements:
-             - content_provider:
-                   node: on_lab_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-             - default_origin_server:
-                   node: http_onlab.vicci.org
-                   relationship: tosca.relationships.DefaultOriginServer
-
-    http_downloads.onosproject.org:
-        type: tosca.nodes.OriginServer
-        requirements:
-             - content_provider:
-                   node: on_lab_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-
-    http_onlab.vicci.org:
-        type: tosca.nodes.OriginServer
-        requirements:
-             - content_provider:
-                   node: on_lab_content
-                   relationship: tosca.relationships.MemberOfContentProvider
-
diff --git a/xos/tosca/samples/ceilometer.yaml b/xos/tosca/samples/ceilometer.yaml
deleted file mode 100644
index 276a293..0000000
--- a/xos/tosca/samples/ceilometer.yaml
+++ /dev/null
@@ -1,69 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup CORD-related services -- vOLT, vCPE, vBNG.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    service_ceilometer:
-      type: tosca.nodes.Service
-      requirements:
-      properties:
-          view_url: /admin/ceilometer/ceilometerservice/$id$/
-          kind: ceilometer
-#          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
-#      artifacts:
-#          pubkey: /opt/xos/observers/vcpe/vcpe_public_key
-
-
-    Private:
-      type: tosca.nodes.NetworkTemplate
-
-    ceilometer_network:
-      type: tosca.nodes.network.Network.XOS

-      properties:

-          ip_version: 4

-          labels: ceilometer_client_access

-      requirements:

-          - network_template:

-              node: Private

-              relationship: tosca.relationships.UsesNetworkTemplate

-          - owner:

-              node: mysite_ceilometer

-              relationship: tosca.relationships.MemberOfSlice

-          - connection:

-              node: mysite_ceilometer

-              relationship: tosca.relationships.ConnectsToSlice
-
-    mysite:
-      type: tosca.nodes.Site
-
-    mysite_ceilometer:
-      description: Ceilometer Proxy Slice
-      type: tosca.nodes.Slice
-      requirements:
-          - ceilometer_service:
-              node: service_ceilometer
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
diff --git a/xos/tosca/samples/composition.yaml b/xos/tosca/samples/composition.yaml
deleted file mode 100644
index 393c15b..0000000
--- a/xos/tosca/samples/composition.yaml
+++ /dev/null
@@ -1,111 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Two services "service_one" and "service_two" with a tenancy relationship.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    # setup the services
-
-    service_one:
-      type: tosca.nodes.Service
-      requirements:
-          - two_tenant:
-              node: service_two
-              relationship: tosca.relationships.TenantOfService
-
-    service_two:
-      type: tosca.nodes.Service
-
-    # the slices will need a site
-
-    mysite:
-      type: tosca.nodes.Site
-
-    # setup the slices
-
-    mysite_one:
-      description: Service One controller Slice
-      type: tosca.nodes.Slice
-      requirements:
-          - service:
-              node: service_one
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
-    mysite_two:
-      description: Service Two controller Slice
-      type: tosca.nodes.Slice
-      requirements:
-          - service:
-              node: service_two
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
-    # setup an instance in each slice
-
-    one_controller:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: rhel
-            version: 6.5
-      requirements:
-          - slice:
-                node: mysite_one
-                relationship: tosca.relationships.MemberOfSlice
-
-    two_controller:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: rhel
-            version: 6.5
-      requirements:
-          - slice:
-                node: mysite_two
-                relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/samples/container.yaml b/xos/tosca/samples/container.yaml
deleted file mode 100644
index 841c929..0000000
--- a/xos/tosca/samples/container.yaml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Template for deploying a single server with predefined properties.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite:
-      type: tosca.nodes.Site
-
-    mysite_contest:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: mysite
-                relationship: tosca.relationships.MemberOfSite
-
-    andybavier/docker-vcpe:
-      type: tosca.nodes.Image
-      properties:
-        kind: container
-        container_format: na
-        disk_format: na
-
-    my_container:
-      type: tosca.nodes.Compute.Container
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-      requirements:
-          - slice:
-                node: mysite_contest
-                relationship: tosca.relationships.MemberOfSlice
-          - image:
-                node: andybavier/docker-vcpe
-                relationship: tosca.relationships.UsesImage
diff --git a/xos/tosca/samples/container_slice.yaml b/xos/tosca/samples/container_slice.yaml
deleted file mode 100644
index f8877df..0000000
--- a/xos/tosca/samples/container_slice.yaml
+++ /dev/null
@@ -1,40 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Create a new deployment, controller, and site.
-    * Add a SiteDeployment from the site to the deployment using the controller.
-    * Create a Slice in the Site, with one Instance
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite:
-      type: tosca.nodes.Site
-
-    mysite_containers:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: mysite
-                relationship: tosca.relationships.MemberOfSite
-      properties:
-          default_isolation: container
-
diff --git a/xos/tosca/samples/cord-cloudlab.yaml b/xos/tosca/samples/cord-cloudlab.yaml
deleted file mode 100644
index 05a7f01..0000000
--- a/xos/tosca/samples/cord-cloudlab.yaml
+++ /dev/null
@@ -1,117 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup CORD-related services -- vOLT, vCPE, vBNG.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    # CORD Services
-    service_volt:
-      type: tosca.nodes.Service
-      requirements:
-          - vcpe_tenant:
-              node: service_vcpe
-              relationship: tosca.relationships.TenantOfService
-      properties:
-          view_url: /admin/cord/voltservice/$id$/
-          kind: vOLT
-
-    service_vcpe:
-      type: tosca.nodes.VCPEService
-      requirements:
-          - vbng_tenant:
-              node: service_vbng
-              relationship: tosca.relationships.TenantOfService
-      properties:
-          view_url: /admin/cord/vcpeservice/$id$/
-          backend_network_label: hpc_client
-          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
-      artifacts:
-          pubkey: /opt/xos/observers/vcpe/vcpe_public_key
-
-    service_vbng:
-      type: tosca.nodes.VBNGService
-      properties:
-          view_url: /admin/cord/vbngservice/$id$/
-          vbng_url: http://10.0.3.136:8181/onos/virtualbng/
-
-    mysite:
-      type: tosca.nodes.Site
-
-    Private:
-      type: tosca.nodes.NetworkTemplate
-
-    # networks required by vCPE
-    lan_network:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_vcpe
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_vcpe
-              relationship: tosca.relationships.ConnectsToSlice
-
-    wan_network:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_vcpe
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_vcpe
-              relationship: tosca.relationships.ConnectsToSlice
-
-    hpc_client_network:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_vcpe
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_vcpe
-              relationship: tosca.relationships.ConnectsToSlice
-
-    mysite_vcpe:
-      description: vCPE Controller Slice
-      type: tosca.nodes.Slice
-      requirements:
-          - vcpe_service:
-              node: service_vcpe
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
diff --git a/xos/tosca/samples/dashboardview.yaml b/xos/tosca/samples/dashboardview.yaml
deleted file mode 100644
index 24a1b19..0000000
--- a/xos/tosca/samples/dashboardview.yaml
+++ /dev/null
@@ -1,50 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Dashboard View
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    Ceilometer:
-      type: tosca.nodes.DashboardView
-      properties:
-          url: http:/xosmetering/
-
-    Tenant:
-      type: tosca.nodes.DashboardView
-      properties:
-          no-create: true
-          no-update: true
-          no-delete: true
-
-    padmin@vicci.org:
-      type: tosca.nodes.User
-      properties:
-          firstname: XOS
-          lastname: admin
-          is_admin: true
-      requirements:
-          - tenant_dashboard:
-              node: Tenant
-              relationship: tosca.relationships.UsesDashboard
-          - ceilometer_dashboard:
-              node: Ceilometer
-              relationship: tosca.relationships.UsesDashboard
diff --git a/xos/tosca/samples/exampleservice.yaml b/xos/tosca/samples/exampleservice.yaml
deleted file mode 100644
index d8e9cd6..0000000
--- a/xos/tosca/samples/exampleservice.yaml
+++ /dev/null
@@ -1,63 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup the ExampleService
-
-imports:
-   - custom_types/xos.yaml
-   - custom_types/exampleservice.yaml
-
-topology_template:
-  node_templates:
-
-    mysite:
-      type: tosca.nodes.Site
-
-    mysite_exampleservice:
-      description: This slice holds the ExampleService
-      type: tosca.nodes.Slice
-
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          - exmapleserver:
-              node: service#exampleservice
-              relationship: tosca.relationships.MemberOfService
-
-    service#exampleservice:
-      type: tosca.nodes.ExampleService
-      properties:
-          view_url: /admin/exampleservice/exampleservice/$id$/
-          kind: exampleservice
-          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
-          private_key_fn: /opt/xos/synchronizers/exampleservice/exampleservice_private_key
-          service_message: hello
-      artifacts:
-          pubkey: /opt/xos/synchronizers/exampleservice/exampleservice_public_key
-
-
-    tenant#exampletenant1:
-        type: tosca.nodes.ExampleTenant
-        properties:
-            tenant_message: world
-        requirements:
-          - tenant:
-              node: service#exampleservice
-              relationship: tosca.relationships.TenantOfService
-
diff --git a/xos/tosca/samples/library-onboard.yaml b/xos/tosca/samples/library-onboard.yaml
deleted file mode 100644
index 7f8521c..0000000
--- a/xos/tosca/samples/library-onboard.yaml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Sample library onboard
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    library#sample:
-      type: tosca.nodes.Library
-      properties:
-          base_url: file:///opt/xos/
-          tosca_resource: tosca/samples/samplelibrary.py
-          requires: vsg, vtn, onos
-
-
-
diff --git a/xos/tosca/samples/network_templates.yaml b/xos/tosca/samples/network_templates.yaml
deleted file mode 100644
index 68e12bd..0000000
--- a/xos/tosca/samples/network_templates.yaml
+++ /dev/null
@@ -1,38 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Make some network templates
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    template1:
-      type: tosca.nodes.NetworkTemplate
-
-    template2:
-      type: tosca.nodes.NetworkTemplate
-      properties:
-          visibility: public
-          translation: NAT
-          shared_network_name: two
-          shared_network_id: 2222
-          topology_kind: bigswitch
-          controller_kind: onos
-
diff --git a/xos/tosca/samples/new_site_deploy_slice.yaml b/xos/tosca/samples/new_site_deploy_slice.yaml
deleted file mode 100644
index e29a29c..0000000
--- a/xos/tosca/samples/new_site_deploy_slice.yaml
+++ /dev/null
@@ -1,91 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Create a new deployment, controller, and site.
-    * Add a SiteDeployment from the site to the deployment using the controller.
-    * Create a Slice in the Site, with one Instance
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    newdeployment:
-      type: tosca.nodes.Deployment
-
-    newcontroller:
-      type: tosca.nodes.Controller
-      requirements:
-          - deployment:
-              node: newdeployment
-              relationship: tosca.relationships.ControllerDeployment
-      properties:
-           backend_type: openstack
-           version: v1.23.4
-           auth_url: http://foo/
-           admin_user: johndoe
-           admin_password: letmeout
-           admin_tenant: 12345678
-           domain: mydomain
-           rabbit_host: rabhost
-           rabbit_user: rabuser
-           rabbit_password: rabpw
-
-    newsite:
-      type: tosca.nodes.Site
-      properties:
-          display_name: some new site
-          site_url: http://newsite.org/
-      requirements:
-          - deployment:
-               node: newdeployment
-               relationship: tosca.relationships.SiteDeployment
-               requirements:
-                   - controller:
-                       node: newcontroller
-                       relationship: tosca.relationships.UsesController
-
-    newsite_tosca:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: newsite
-                relationship: tosca.relationships.MemberOfSite
-
-    my_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: rhel
-            version: 6.5
-      requirements:
-          - slice:
-                node: newsite_tosca
-                relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/samples/one_instance.yaml b/xos/tosca/samples/one_instance.yaml
deleted file mode 100644
index 9022b62..0000000
--- a/xos/tosca/samples/one_instance.yaml
+++ /dev/null
@@ -1,56 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Template for deploying a single server with predefined properties.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite:
-      type: tosca.nodes.Site
-
-    mysite_tosca:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: mysite
-                relationship: tosca.relationships.MemberOfSite
-
-    my_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: rhel
-            version: 6.5
-      requirements:
-          - slice:
-                node: mysite_tosca
-                relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/samples/onos.yaml b/xos/tosca/samples/onos.yaml
deleted file mode 100644
index 713f029..0000000
--- a/xos/tosca/samples/onos.yaml
+++ /dev/null
@@ -1,118 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup CORD-related services -- vOLT, vCPE, vBNG.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    ONOS:
-      type: tosca.nodes.ONOSService
-      requirements:
-      properties:
-          kind: onos
-          view_url: /admin/onos/onosservice/$id$/
-          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
-      artifacts:
-          pubkey: /opt/xos/synchronizers/onos/onos_key.pub
-
-    vBNG:
-      type: tosca.nodes.ONOSvBNGApp
-      requirements:
-          - onos_tenant:
-              node: ONOS
-              relationship: tosca.relationships.TenantOfService
-      properties:
-          dependencies: org.onosproject.proxyarp, org.onosproject.virtualbng, org.onosproject.openflow, org.onosproject.fwd
-          config_addresses.json: >
-            {
-                "addresses" : [

-                            {

-                                "dpid" : "00:00:00:00:00:00:00:a1",

-                                "port" : "2",

-                                "ips" : ["192.0.0.1/24"],

-                                "mac" : "00:00:00:00:00:99"

-

-                            },

-                            {

-                                "dpid" : "00:00:00:00:00:00:00:a5",

-                                "port" : "4",

-                                "ips" : ["200.0.0.5/24"],

-                                "mac" : "00:00:00:00:00:98"

-                            }

-                ]

-            }
-          config_virtualbng.json: >
-            {
-                "localPublicIpPrefixes" : [

-                    "200.0.0.0/32",

-                    "201.0.0.0/30",

-                    "202.0.0.0/30"

-                ],

-                "nextHopIpAddress" : "200.0.0.5",

-                "publicFacingMac" : "00:00:00:00:00:66",

-                "xosIpAddress" : "10.11.10.1",

-                "xosRestPort" : "9999"

-            }
-
-    vOLT:
-      type: tosca.nodes.ONOSvOLTApp
-      requirements:
-          - onos_tenant:
-              node: ONOS
-              relationship: tosca.relationships.TenantOfService
-      properties:
-          dependencies: org.onosproject.olt
-
-    mysite:
-      type: tosca.nodes.Site
-
-    mysite_onos:
-      description: ONOS Controller Slice
-      type: tosca.nodes.Slice
-      requirements:
-          - ONOS:
-              node: ONOS
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
-    my_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: Ubuntu
-            version: 14.10
-      requirements:
-          - slice:
-                node: mysite_onos
-                relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/samples/privileges.yaml b/xos/tosca/samples/privileges.yaml
deleted file mode 100644
index 74558b0..0000000
--- a/xos/tosca/samples/privileges.yaml
+++ /dev/null
@@ -1,76 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Make some network templates
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite:
-      type: tosca.nodes.Site
-
-    johndoe@foo.bar:
-      type: tosca.nodes.User
-      properties:
-          password: letmein
-          firstname: john
-          lastname: doe
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          # Site privilege must always be specified in user objects, since
-          # user depends on site.
-          - privilege:
-              node: mysite
-              relationship: tosca.relationships.PIPrivilege
-
-    janedoe@foo.bar:
-      type: tosca.nodes.User
-      properties:
-          password: letmein
-          firstname: john
-          lastname: doe
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          - privilege:
-              node: mysite
-              relationship: tosca.relationships.TechPrivilege
-
-    privsite:
-      type: tosca.nodes.Site
-
-    privsite_slice1:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: privsite
-                relationship: tosca.relationships.MemberOfSite
-          # Slice privileges must always be specified in slice objects, since
-          # slice depends on user.
-          - privilege:
-                node: johndoe@foo.bar
-                relationship: tosca.relationships.AdminPrivilege
-          - privilege:
-                node: janedoe@foo.bar
-                relationship: tosca.relationships.AccessPrivilege
-
diff --git a/xos/tosca/samples/samplelibrary.py b/xos/tosca/samples/samplelibrary.py
deleted file mode 100644
index a6a0a4a..0000000
--- a/xos/tosca/samples/samplelibrary.py
+++ /dev/null
@@ -1,19 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# some empty file used to test library onboarding
-
-pass
diff --git a/xos/tosca/samples/scalable_instance.yaml b/xos/tosca/samples/scalable_instance.yaml
deleted file mode 100644
index 3421f47..0000000
--- a/xos/tosca/samples/scalable_instance.yaml
+++ /dev/null
@@ -1,61 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Template for deploying a single server with predefined properties.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite:
-      type: tosca.nodes.Site
-
-    mysite_tosca_scalable:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: mysite
-                relationship: tosca.relationships.MemberOfSite
-
-    my_scalable_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        scalable:
-         properties:
-           min_instances: 1
-           max_instances: 25
-           default_instances: 13
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: rhel
-            version: 6.5
-      requirements:
-          - slice:
-                node: mysite_tosca_scalable
-                relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/samples/scalable_service.yaml b/xos/tosca/samples/scalable_service.yaml
deleted file mode 100644
index d39eae4..0000000
--- a/xos/tosca/samples/scalable_service.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Template for deploying a single server with predefined properties.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    scalable_service:
-      type: tosca.nodes.Service
-      capabilities:
-          scalable:
-              properties:
-                  max_instances: 25
-                  min_instances: 1
-                  default_instances: 1
diff --git a/xos/tosca/samples/slice_default_image.yaml b/xos/tosca/samples/slice_default_image.yaml
deleted file mode 100644
index 71ec98f..0000000
--- a/xos/tosca/samples/slice_default_image.yaml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Create a new deployment, controller, and site.
-    * Add a SiteDeployment from the site to the deployment using the controller.
-    * Create a Slice in the Site, with one Instance
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite:
-      type: tosca.nodes.Site
-
-    trusty-server-multi-nic:
-      type: tosca.nodes.Image
-
-    m1.small:
-      type: tosca.nodes.Flavor
-
-    mysite_test1:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: mysite
-                relationship: tosca.relationships.MemberOfSite
-          - default_image:
-                node: trusty-server-multi-nic
-                relationship: tosca.relationships.DefaultImage
-          -default_flavor:
-                node: m1.small
-                relationship: tosca.relationships.DefaultFlavor
diff --git a/xos/tosca/samples/slicetag.yaml b/xos/tosca/samples/slicetag.yaml
deleted file mode 100644
index 7d4be54..0000000
--- a/xos/tosca/samples/slicetag.yaml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup CORD-related services -- vOLT, vCPE, vBNG.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite_vsg:
-      type: tosca.nodes.Slice
-      properties:
-          no-create: True
-          no-delete: True
-          no-update: True
-
-    service_vsg:
-      type: tosca.nodes.Service
-      properties:
-          no-create: True
-          no-delete: True
-          no-update: True
-
-    mysite_vsg_foobar_tag:
-      type: tosca.nodes.Tag
-      properties:
-          name: foobar
-          value: xyz
-      requirements:
-          - target:
-              node: mysite_vsg
-              relationship: tosca.relationships.TagsObject
-          - service:
-              node: service_vsg
-              relationship: tosca.relationships.MemberOfService
diff --git a/xos/tosca/samples/two_slices_shared_private_net.yaml b/xos/tosca/samples/two_slices_shared_private_net.yaml
deleted file mode 100644
index 91fb20e..0000000
--- a/xos/tosca/samples/two_slices_shared_private_net.yaml
+++ /dev/null
@@ -1,126 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Template for deploying a single server with predefined properties.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite:
-      type: tosca.nodes.Site
-
-    Private:
-      type: tosca.nodes.NetworkTemplate
-
-    producer_private_network:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - slice:
-              node: mysite_producer
-              relationship: tosca.relationships.MemberOfSlice
-
-    mysite_producer:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: mysite
-                relationship: tosca.relationships.MemberOfSite
-
-    mysite_consumer:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: mysite
-                relationship: tosca.relationships.MemberOfSite
-          - network:
-                node: producer_private_network
-                relationship: tosca.relationships.ConnectsToNetwork
-
-    producer_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: rhel
-            version: 6.5
-      requirements:
-          - slice:
-                node: mysite_producer
-                relationship: tosca.relationships.MemberOfSlice
-
-    consumer_server:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: rhel
-            version: 6.5
-      requirements:
-          - slice:
-                node: mysite_consumer
-                relationship: tosca.relationships.MemberOfSlice
-
-    producer_pvt_net_port:
-        type: tosca.nodes.network.Port
-        requirements:
-            - link:
-                  node: producer_private_network
-                  relationship: tosca.relationships.network.LinksTo
-            - binding:
-                  node: producer_server
-                  relationship: tosca.relationships.network.BindsTo
-
-    consumer_pvt_net_port:
-        type: tosca.nodes.network.Port
-        requirements:
-            - link:
-                  node: producer_private_network
-                  relationship: tosca.relationships.network.LinksTo
-            - binding:
-                  node: consumer_server
-                  relationship: tosca.relationships.network.BindsTo
-
-
-
diff --git a/xos/tosca/samples/two_slices_two_networks.yaml b/xos/tosca/samples/two_slices_two_networks.yaml
deleted file mode 100644
index f161af7..0000000
--- a/xos/tosca/samples/two_slices_two_networks.yaml
+++ /dev/null
@@ -1,85 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Template for deploying a single server with predefined properties.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite:
-      type: tosca.nodes.Site
-
-    Private:
-      type: tosca.nodes.NetworkTemplate
-
-    # this one lets XOS auto-allocate a subnet
-    producer_private_network:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - slice:
-              node: mysite_producer
-              relationship: tosca.relationships.MemberOfSlice
-          - slice:
-              node: mysite_producer
-              relationship: tosca.relationships.ConnectsToSlice
-
-    # this one specifies the subnet to use
-    producer_private_network2:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-          cidr: 123.123.0.0/16
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - slice:
-              node: mysite_producer
-              relationship: tosca.relationships.MemberOfSlice
-          - slice:
-              node: mysite_producer
-              relationship: tosca.relationships.ConnectsToSlice
-
-    mysite_producer:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: mysite
-                relationship: tosca.relationships.MemberOfSite
-
-    mysite_consumer:
-      type: tosca.nodes.Slice
-      requirements:
-          - slice:
-                node: mysite
-                relationship: tosca.relationships.MemberOfSite
-          - network:
-                node: producer_private_network
-                relationship: tosca.relationships.ConnectsToNetwork
-          - network2:
-                node: producer_private_network2
-                relationship: tosca.relationships.ConnectsToNetwork
-
-
diff --git a/xos/tosca/samples/users.yaml b/xos/tosca/samples/users.yaml
deleted file mode 100644
index 0bcbb06..0000000
--- a/xos/tosca/samples/users.yaml
+++ /dev/null
@@ -1,55 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Make some network templates
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    mysite:
-      type: tosca.nodes.Site
-
-    johndoe@foo.bar:
-      type: tosca.nodes.User
-      properties:
-          password: letmein
-          firstname: john
-          lastname: doe
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
-    janedoe@foo.bar:
-      type: tosca.nodes.User
-      properties:
-          password: letmeintoo
-          firstname: jane
-          lastname: doe
-          phone: 111-222-3333
-          user_url: http://janedoe/
-          public_key: asdlfkjasldkfjasldkjfhaslkdjfhglaskdjfhlaksjdhfkasdfasdf
-          is_active: true
-          is_admin: true
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-
diff --git a/xos/tosca/samples/vtn-external.yaml b/xos/tosca/samples/vtn-external.yaml
deleted file mode 100644
index 5b4970f..0000000
--- a/xos/tosca/samples/vtn-external.yaml
+++ /dev/null
@@ -1,47 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup CORD-related services -- vOLT, vCPE, vBNG.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-    service_ONOS_VTN:
-      type: tosca.nodes.ONOSService
-      requirements:
-      properties:
-          kind: onos
-          view_url: /admin/onos/onosservice/$id$/
-          no_container: true
-          rest_hostname: ctl.smbaker-xos-neu.xos-pg0.clemson.cloudlab.us
-
-    VTN_ONOS_app:
-      type: tosca.nodes.ONOSVTNApp
-      requirements:
-          - onos_tenant:
-              node: service_ONOS_VTN
-              relationship: tosca.relationships.TenantOfService
-      properties:
-          dependencies: org.onosproject.drivers, org.onosproject.drivers.ovsdb, org.onosproject.lldpprovider, org.onosproject.openflow-base, org.onosproject.ovsdb-base, org.onosproject.dhcp, org.onosproject.openstackswitching, org.onosproject.cordvtn
-          rest_onos/v1/network/configuration/: { get_artifact: [ SELF, vtn_network_cfg_json, LOCAL_FILE ] }
-      artifacts:
-          vtn_network_cfg_json: /root/setup/vtn-network-cfg.json
-
-
diff --git a/xos/tosca/samples/vtn-service-chain-ssh.yaml b/xos/tosca/samples/vtn-service-chain-ssh.yaml
deleted file mode 100644
index fee557d..0000000
--- a/xos/tosca/samples/vtn-service-chain-ssh.yaml
+++ /dev/null
@@ -1,179 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Two services "service_one" and "service_two" with a tenancy relationship.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    Private-Indirect:
-      type: tosca.nodes.NetworkTemplate
-      properties:
-          access: indirect
-
-    management:
-      type: tosca.nodes.network.Network.XOS
-      properties:
-          no-create: true
-          no-delete: true
-          no-update: true
-
-    mysite:
-      type: tosca.nodes.Site
-
-    trusty-server-multi-nic:
-      type: tosca.nodes.Image
-
-    service_vsg:
-      type: tosca.nodes.VSGService
-      requirements:
-          - one_tenant:
-              node: service_one
-              relationship: tosca.relationships.TenantOfService
-      properties:
-          no-create: true
-          no-delete: true
-
-    service_one:
-      type: tosca.nodes.Service
-      requirements:
-          - two_tenant:
-              node: service_two
-              relationship: tosca.relationships.TenantOfService
-      properties:
-          kind: one
-          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
-      artifacts:
-          pubkey: /opt/xos/services/vsg/keys/vsg_rsa.pub
-
-    service_two:
-      type: tosca.nodes.Service
-      properties:
-          kind: two
-          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
-      artifacts:
-          pubkey: /opt/xos/services/vsg/keys/vsg_rsa.pub
-
-    mysite_one:
-      type: tosca.nodes.Slice
-      properties:
-          network: noauto
-      requirements:
-          - service:
-              node: service_one
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          - management:
-              node: management
-              relationship: tosca.relationships.ConnectsToNetwork
-
-    mysite_two:
-      type: tosca.nodes.Slice
-      properties:
-          network: noauto
-      requirements:
-          - service:
-              node: service_two
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          - management:
-              node: management
-              relationship: tosca.relationships.ConnectsToNetwork
-
-    one_access:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-      requirements:
-          - network_template:
-              node: Private-Indirect
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_one
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_one
-              relationship: tosca.relationships.ConnectsToSlice
-
-    two_access:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-      requirements:
-          - network_template:
-              node: Private-Indirect
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_two
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_two
-              relationship: tosca.relationships.ConnectsToSlice
-
-    # Virtual machines
-    one_instance:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: Ubuntu
-            version: 14.10
-      requirements:
-          - slice:
-                node: mysite_one
-                relationship: tosca.relationships.MemberOfSlice
-
-    # Virtual machines
-    two_instance:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: Ubuntu
-            version: 14.10
-      requirements:
-          - slice:
-                node: mysite_two
-                relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/samples/vtn-service-chain.yaml b/xos/tosca/samples/vtn-service-chain.yaml
deleted file mode 100644
index d004112..0000000
--- a/xos/tosca/samples/vtn-service-chain.yaml
+++ /dev/null
@@ -1,173 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Two services "service_one" and "service_two" with a tenancy relationship.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    Private-Indirect:
-      type: tosca.nodes.NetworkTemplate
-      properties:
-          access: indirect
-
-    management:
-      type: tosca.nodes.network.Network.XOS
-      properties:
-          no-create: true
-          no-delete: true
-          no-update: true
-
-    mysite:
-      type: tosca.nodes.Site
-
-    trusty-server-multi-nic:
-      type: tosca.nodes.Image
-
-    service_vsg:
-      type: tosca.nodes.VSGService
-      requirements:
-          - one_tenant:
-              node: service_one
-              relationship: tosca.relationships.TenantOfService
-      properties:
-          no-create: true
-          no-delete: true
-
-    service_one:
-      type: tosca.nodes.Service
-      requirements:
-          - two_tenant:
-              node: service_two
-              relationship: tosca.relationships.TenantOfService
-      properties:
-          kind: one
-
-    service_two:
-      type: tosca.nodes.Service
-      properties:
-          kind: two
-
-    mysite_one:
-      type: tosca.nodes.Slice
-      properties:
-          network: noauto
-      requirements:
-          - service:
-              node: service_one
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          - management:
-              node: management
-              relationship: tosca.relationships.ConnectsToNetwork
-
-    mysite_two:
-      type: tosca.nodes.Slice
-      properties:
-          network: noauto
-      requirements:
-          - service:
-              node: service_two
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          - management:
-              node: management
-              relationship: tosca.relationships.ConnectsToNetwork
-
-    one_access:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-      requirements:
-          - network_template:
-              node: Private-Indirect
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_one
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_one
-              relationship: tosca.relationships.ConnectsToSlice
-
-    two_access:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-      requirements:
-          - network_template:
-              node: Private-Indirect
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_two
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_two
-              relationship: tosca.relationships.ConnectsToSlice
-
-    # Virtual machines
-    one_instance:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: Ubuntu
-            version: 14.10
-      requirements:
-          - slice:
-                node: mysite_one
-                relationship: tosca.relationships.MemberOfSlice
-
-    # Virtual machines
-    two_instance:
-      type: tosca.nodes.Compute
-      capabilities:
-        # Host container properties
-        host:
-         properties:
-           num_cpus: 1
-           disk_size: 10 GB
-           mem_size: 4 MB
-        # Guest Operating System properties
-        os:
-          properties:
-            # host Operating System image properties
-            architecture: x86_64
-            type: linux
-            distribution: Ubuntu
-            version: 14.10
-      requirements:
-          - slice:
-                node: mysite_two
-                relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/tests/allObserverTests.py b/xos/tosca/tests/allObserverTests.py
deleted file mode 100644
index d1d4e97..0000000
--- a/xos/tosca/tests/allObserverTests.py
+++ /dev/null
@@ -1,30 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from observerVMTest import ObserverVMTest
-from observerContainerTest import ObserverContainerTest
-from observerImageTest import ObserverImageTest
-from observerUserTest import ObserverUserTest
-from observerSiteTest import ObserverSiteTest
-from observerSliceTest import ObserverSliceTest
-
-if __name__ == "__main__":
-    ObserverVMTest()
-    ObserverContainerTest()
-    ObserverImageTest()
-    ObserverSiteTest()
-    ObserverUserTest()
-    ObserverSliceTest()
diff --git a/xos/tosca/tests/alltests.py b/xos/tosca/tests/alltests.py
deleted file mode 100644
index f5eb2c8..0000000
--- a/xos/tosca/tests/alltests.py
+++ /dev/null
@@ -1,44 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from enginetest import EngineTest
-from coarsetenancytest import CoarseTenancyTest
-from porttest import PortTest
-from networktest import NetworkTest
-from servicetest import ServiceTest
-from usertest import UserTest
-from computetest import ComputeTest
-from sitetest import SiteTest
-from deploymenttest import DeploymentTest
-from nodetest import NodeTest
-from slicetest import SliceTest
-from controllertest import ControllerTest
-from imagetest import ImageTest
-
-if __name__ == "__main__":
-    EngineTest()
-    SiteTest()
-    DeploymentTest()
-    ControllerTest()
-    NodeTest()
-    NetworkTest()
-    PortTest()
-    CoarseTenancyTest()
-    ServiceTest()
-    UserTest()
-    SliceTest()
-    ComputeTest()
-    ImageTest()
diff --git a/xos/tosca/tests/basetest.py b/xos/tosca/tests/basetest.py
deleted file mode 100644
index fbd2199..0000000
--- a/xos/tosca/tests/basetest.py
+++ /dev/null
@@ -1,168 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-import os
-import random
-import string
-import sys
-import tempfile
-
-# add the parent parent directory to sys.path
-# XXX this is very hackish :(
-import os,sys,inspect
-currentdir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
-parentdir = os.path.dirname(currentdir)
-sys.path.append(parentdir)
-parentparentdir = os.path.dirname(parentdir)
-sys.path.append(parentparentdir)
-
-os.environ.setdefault("DJANGO_SETTINGS_MODULE", "xos.settings")
-import django
-django.setup()
-
-from tosca.engine import XOSTosca
-from core.models import User
-
-class BaseToscaTest(object):
-    username = "padmin@vicci.org"
-    current_test = ""
-    base_yaml = \
-"""tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: tosca test case
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-"""
-
-    def __init__(self):
-        self.runtest()
-
-    def make_nodetemplate(self, name, type, props={}, reqs=[], caps={}, artifacts={}):
-        yml = "    %s:\n      type: %s\n"  % (name, type)
-        if props:
-            yml = yml + "      properties:\n"
-            for (k,v) in props.items():
-                yml = yml + "          %s: %s\n" % (k, v)
-
-        if reqs:
-            yml = yml + "      requirements:\n"
-            i=0
-            for (name,relat) in reqs:
-                yml = yml + "        - req%d:\n" % i
-                yml = yml + "              node: %s\n" % name
-                yml = yml + "              relationship: %s\n" % relat
-                i = i + 1
-
-        if caps:
-            yml = yml + "      capabilities:\n"
-            for (cap,capdict) in caps.items():
-               yml = yml + "        %s:\n" % cap
-               yml = yml + "          properties:\n"
-               for (k,v) in capdict.items():
-                   yml = yml + "            %s: %s\n" % (k,v)
-
-        if artifacts:
-            yml = yml + "      artifacts:\n"
-            for (k,v) in artifacts.items():
-                yml = yml + "        %s: %s\n" % (k,v)
-
-        return yml
-
-    def make_compute(self, slice, name, caps={}, props={}, reqs=[], num_cpus="1", disk_size="10 GB", mem_size="4 MB", isolation="vm"):
-        reqs = reqs[:]
-        props = props.copy()
-        caps = caps.copy()
-
-        if isolation=="container":
-            type = "tosca.nodes.Compute.Container"
-        elif isolation=="container_vm":
-            type = "tosca.nodes.Compute.ContainerVM"
-        else:
-            type = "tosca.nodes.Compute"
-
-        caps.update( {"host": {"num_cpus": num_cpus, "disk_size": disk_size, "mem_size": mem_size},
-                      "os": {"architecture": "x86_64", "type": "linux", "distribution": "rhel", "version": "6.5"}} )
-        reqs.append( (slice, "tosca.relationships.MemberOfSlice") )
-
-        return self.make_nodetemplate(name, type,
-                                      caps= caps,
-                                      props = props,
-                                      reqs= reqs)
-
-    def make_user_template(self):
-        return self.make_nodetemplate("test@user.com", "tosca.nodes.User",
-             props = {"firstname": "test", "lastname": "user", "password": "letmein"},
-             reqs = [("testsite", "tosca.relationships.MemberOfSite")])
-
-    def make_random_string(self,desired_len):
-        return ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(desired_len))
-
-    def assert_noobj(self, cls, name):
-        objs = cls.objects.filter(name=name)
-        assert(not objs)
-
-    def assert_obj(self, cls, name, **kwargs):
-        obj = cls.objects.get(name=name)
-        assert(obj)
-        for (k,v) in kwargs.items():
-            if (getattr(obj,k,None) != v):
-                print "Object %s property '%s' is '%s' and should be '%s'" % (obj, k, getattr(obj,k,None), v)
-                assert(False)
-        return obj
-
-    def try_to_delete(self, cls, purge=True, **kwargs):
-        for obj in cls.objects.filter(**kwargs):
-            obj.delete(purge=purge)
-
-        if purge:
-            for obj in cls.deleted_objects.filter(**kwargs):
-                obj.delete(purge=True)
-
-    def execute(self, yml):
-        u = User.objects.get(email=self.username)
-
-        # save test tosca to a temporary file
-        (tf_h, tf_p) = tempfile.mkstemp(dir="/tmp/", prefix=("tosca_test_%s_" % self.current_test))
-        # print "Saving TOSCA to file: '%s'" % tf_p
-        os.write(tf_h, self.base_yaml+yml)
-        os.close(tf_h)
-
-        xt = XOSTosca(self.base_yaml+yml, parent_dir=parentdir, log_to_console=False)
-        xt.execute(u)
-
-    def destroy(self, yml):
-        u = User.objects.get(email=self.username)
-
-        #print self.base_yaml+yml
-
-        xt = XOSTosca(self.base_yaml+yml, parent_dir=parentdir, log_to_console=False)
-        xt.destroy(u)
-
-    def runtest(self):
-        for test in self.tests:
-            self.current_test = test.replace(' ','_')
-            print "running", test
-            self.cleanup()
-            getattr(self,test)()
-
-        self.cleanup()
-
-    def cleanup(self):
-        pass
diff --git a/xos/tosca/tests/coarsetenancytest.py b/xos/tosca/tests/coarsetenancytest.py
deleted file mode 100644
index 2b3ba13..0000000
--- a/xos/tosca/tests/coarsetenancytest.py
+++ /dev/null
@@ -1,65 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Service, CoarseTenant
-
-class CoarseTenancyTest(BaseToscaTest):
-    tests = ["create_coarsetenant",
-             "update_coarsetenant"]
-
-    def cleanup(self):
-        self.try_to_delete(Service, name="test_svc1")
-        self.try_to_delete(Service, name="test_svc2")
-
-    def create_coarsetenant(self):
-        self.assert_noobj(Service, "test_svc1")
-        self.assert_noobj(Service, "test_svc2")
-        self.execute(self.make_nodetemplate("test_svc1", "tosca.nodes.Service", reqs=[("test_svc2", "tosca.relationships.TenantOfService")]) +
-                     self.make_nodetemplate("test_svc2", "tosca.nodes.Service"))
-        svc1 = self.assert_obj(Service, "test_svc1", kind="generic", published=True, enabled=True)
-        svc2 = self.assert_obj(Service, "test_svc2", kind="generic", published=True, enabled=True)
-
-        ct = CoarseTenant.objects.filter(provider_service=svc2, subscriber_service=svc1)
-        assert(ct)
-
-    def update_coarsetenant(self):
-        # first make the services without the coarse tenancy relationship
-        self.assert_noobj(Service, "test_svc1")
-        self.assert_noobj(Service, "test_svc2")
-        self.execute(self.make_nodetemplate("test_svc1", "tosca.nodes.Service") +
-                     self.make_nodetemplate("test_svc2", "tosca.nodes.Service"))
-        svc1 = self.assert_obj(Service, "test_svc1", kind="generic", published=True, enabled=True)
-        svc2 = self.assert_obj(Service, "test_svc2", kind="generic", published=True, enabled=True)
-        ct = CoarseTenant.objects.filter(provider_service=svc2, subscriber_service=svc1)
-        assert(not ct)
-
-        # now add the relationship
-        self.execute(self.make_nodetemplate("test_svc1", "tosca.nodes.Service", reqs=[("test_svc2", "tosca.relationships.TenantOfService")])+
-                                            self.make_nodetemplate("test_svc2", "tosca.nodes.Service"))
-        updated_svc1 = self.assert_obj(Service, "test_svc1", kind="generic", published=True, enabled=True)
-
-        assert(svc1.id == updated_svc1.id)
-
-        ct = CoarseTenant.objects.filter(provider_service=svc2, subscriber_service=svc1)
-        assert(ct)
-
-
-if __name__ == "__main__":
-    CoarseTenancyTest()
-
-
diff --git a/xos/tosca/tests/computetest.py b/xos/tosca/tests/computetest.py
deleted file mode 100644
index afb71e5..0000000
--- a/xos/tosca/tests/computetest.py
+++ /dev/null
@@ -1,112 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Instance, Slice
-
-class ComputeTest(BaseToscaTest):
-    tests = [ # "create_compute_m1_tiny", XXX m1.tiny does not exist on cloudlab
-             "create_compute_m1_small",
-             "create_compute_m1_large_8192MB",
-             "create_compute_m1_large_8GB",
-             "destroy_compute",
-             "create_compute_scalable",
-             "destroy_compute_scalable",
-                           ]
-
-    def cleanup(self):
-        self.try_to_delete(Instance, name="test_compute1")
-        self.try_to_delete(Instance, name="test_compute1-0")
-        self.try_to_delete(Instance, name="test_compute1-1")
-        self.try_to_delete(Instance, name="test_compute1-2")
-        self.try_to_delete(Instance, name="test_compute1-3")
-        self.try_to_delete(Slice, name="testsite_slice1")
-
-    def get_base_templates(self):
-        return self.make_nodetemplate("testsite", "tosca.nodes.Site") + \
-               self.make_nodetemplate("testsite_slice1", "tosca.nodes.Slice", reqs=[("testsite", "tosca.relationships.MemberOfSite")])
-
-    def create_compute_m1_tiny(self):
-        self.assert_noobj(Instance, "test_compute1")
-        self.execute(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1", disk_size="1 GB", mem_size="500 MB"))
-        instance = self.assert_obj(Instance, "test_compute1")
-        assert(instance.flavor.name == "m1.tiny")
-
-    def create_compute_m1_small(self):
-        self.assert_noobj(Instance, "test_compute1")
-        self.execute(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1", disk_size="1 GB", mem_size="513 MB"))
-        instance = self.assert_obj(Instance, "test_compute1")
-        assert(instance.flavor.name == "m1.small")
-
-    def create_compute_m1_large_8192MB(self):
-        self.assert_noobj(Instance, "test_compute1")
-        self.execute(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1", mem_size="8192 MB"))
-        instance = self.assert_obj(Instance, "test_compute1")
-        assert(instance.flavor.name == "m1.large")
-
-    def create_compute_m1_large_8GB(self):
-        self.assert_noobj(Instance, "test_compute1")
-        self.execute(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1", mem_size="8 GB"))
-        instance = self.assert_obj(Instance, "test_compute1")
-        assert(instance.flavor.name == "m1.large")
-
-    def destroy_compute(self):
-        self.execute(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1"))
-        self.assert_obj(Instance, "test_compute1")
-        self.destroy(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1"))
-        self.assert_noobj(Instance, "test_compute1")
-
-    def create_compute_scalable(self):
-        self.assert_noobj(Instance, "test_compute1-1")
-        self.assert_noobj(Instance, "test_compute1-2")
-        self.assert_noobj(Instance, "test_compute1-3")
-        self.execute(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1", mem_size="8 GB",
-                                       caps={"scalable": {"min_instances": 2, "max_instances": 3, "default_instances": 2}}))
-        # there should be two instances
-        instance0 = self.assert_obj(Instance, "test_compute1-0")
-        instance1 = self.assert_obj(Instance, "test_compute1-1")
-        self.assert_noobj(Instance, "test_compute1-2")
-
-    def destroy_compute_scalable(self):
-        self.assert_noobj(Instance, "test_compute1-1")
-        self.assert_noobj(Instance, "test_compute1-2")
-        self.assert_noobj(Instance, "test_compute1-3")
-        self.execute(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1", mem_size="8 GB",
-                                       caps={"scalable": {"min_instances": 2, "max_instances": 3, "default_instances": 2}}))
-        # there should be two instances
-        instance0 = self.assert_obj(Instance, "test_compute1-0")
-        instance1 = self.assert_obj(Instance, "test_compute1-1")
-
-        self.destroy(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1", mem_size="8 GB",
-                                       caps={"scalable": {"min_instances": 2, "max_instances": 3, "default_instances": 2}}))
-
-        self.assert_noobj(Instance, "test_compute1-0")
-        self.assert_noobj(Instance, "test_compute1-1")
-
-if __name__ == "__main__":
-    ComputeTest()
-
-
diff --git a/xos/tosca/tests/controllertest.py b/xos/tosca/tests/controllertest.py
deleted file mode 100644
index 8d2add5..0000000
--- a/xos/tosca/tests/controllertest.py
+++ /dev/null
@@ -1,145 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Controller, Deployment
-
-class ControllerTest(BaseToscaTest):
-    tests = ["create_controller_minimal",
-             "create_controller_maximal",
-             "create_controller_nocreate",
-             "destroy_controller",
-             "destroy_controller_nodelete"]
-
-    def cleanup(self):
-        self.try_to_delete(Controller, name="testcon")
-        self.try_to_delete(Deployment, name="testdep")
-
-    def get_base_templates(self):
-        return self.make_nodetemplate("testdep", "tosca.nodes.Deployment")
-
-    def create_controller_minimal(self):
-        self.assert_noobj(Controller, "testcon")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testcon", "tosca.nodes.Controller",
-                                            reqs=[("testdep", "tosca.relationships.ControllerDeployment")]))
-        dep = self.assert_obj(Deployment, "testdep")
-        self.assert_obj(Controller, "testcon",
-                        backend_type="",
-                        version="",
-                        auth_url=None,
-                        admin_user=None,
-                        admin_password=None,
-                        admin_tenant=None,
-                        domain=None,
-                        deployment=dep)
-
-    def create_controller_maximal(self):
-        self.assert_noobj(Controller, "testcon")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testcon", "tosca.nodes.Controller",
-                                            reqs=[("testdep", "tosca.relationships.ControllerDeployment")],
-                                            props={"backend_type": "openstack",
-                                                   "version": "v1.23.4",
-                                                   "auth_url": "http://foo.com/",
-                                                   "admin_user": "johndoe",
-                                                   "admin_password": "letmeout",
-                                                   "admin_tenant": "12345678",
-                                                   "domain": "mydomain"}))
-        dep = self.assert_obj(Deployment, "testdep")
-        self.assert_obj(Controller, "testcon",
-                        backend_type="openstack",
-                        version="v1.23.4",
-                        auth_url="http://foo.com/",
-                        admin_user="johndoe",
-                        admin_password="letmeout",
-                        admin_tenant="12345678",
-                        domain="mydomain",
-                        deployment=dep)
-
-    def create_controller_nocreate(self):
-        self.assert_noobj(Controller, "testcon")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testcon", "tosca.nodes.Controller",
-                                            reqs=[("testdep", "tosca.relationships.ControllerDeployment")],
-                                            props={"no-create": True}))
-        dep = self.assert_obj(Deployment, "testdep")
-        self.assert_noobj(Controller, "testcon")
-
-    def update_controller(self):
-        self.assert_noobj(Controller, "testcon")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testcon", "tosca.nodes.Controller",
-                                            reqs=[("testdep", "tosca.relationships.ControllerDeployment")]))
-        dep = self.assert_obj(Deployment, "testdep")
-        orig_con = self.assert_obj(Controller, "testcon",
-                        backend_type="",
-                        version="",
-                        auth_url=None,
-                        admin_user=None,
-                        admin_password=None,
-                        admin_tenant=None,
-                        domain=None,
-                        deployment=dep)
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testcon", "tosca.nodes.Controller",
-                                            reqs=[("testdep", "tosca.relationships.ControllerDeployment")],
-                                            props={"version": "1.1"}))
-        con = self.assert_obj(Controller, "testcon",
-                        backend_type="",
-                        version="1.1",
-                        auth_url=None,
-                        admin_user=None,
-                        admin_password=None,
-                        admin_tenant=None,
-                        domain=None,
-                        deployment=dep)
-        assert(orig_con.id == con.id)
-
-    def destroy_controller(self):
-        self.assert_noobj(Controller, "testcon")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testcon", "tosca.nodes.Controller",
-                                            reqs=[("testdep", "tosca.relationships.ControllerDeployment")]))
-        self.assert_obj(Controller, "testcon")
-        self.destroy(self.get_base_templates() +
-                     self.make_nodetemplate("testcon", "tosca.nodes.Controller",
-                                            reqs=[("testdep", "tosca.relationships.ControllerDeployment")]))
-        self.assert_noobj(Controller, "testcon")
-
-    def destroy_controller_nodelete(self):
-        self.assert_noobj(Controller, "testcon")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testcon", "tosca.nodes.Controller",
-                                            reqs=[("testdep", "tosca.relationships.ControllerDeployment")]))
-        orig_con = self.assert_obj(Controller, "testcon")
-        # NOTE: Had to specify no-delete on the deployment as well, otherwise
-        # the deployment deletion would cause the controller to be deleted
-        # as well. I'm thinking this is as it should be, but it's a little
-        # counter-inutitive.
-        self.destroy(self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            props={"no-delete": True}) +
-                     self.make_nodetemplate("testcon", "tosca.nodes.Controller",
-                                            reqs=[("testdep", "tosca.relationships.ControllerDeployment")],
-                                            props={"no-delete": True}))
-        con = self.assert_obj(Controller, "testcon")
-        assert(orig_con.id == con.id)
-
-if __name__ == "__main__":
-    ControllerTest()
-
-
diff --git a/xos/tosca/tests/deploymenttest.py b/xos/tosca/tests/deploymenttest.py
deleted file mode 100644
index 0c300c8..0000000
--- a/xos/tosca/tests/deploymenttest.py
+++ /dev/null
@@ -1,157 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Deployment, Image, User, DeploymentPrivilege
-
-class DeploymentTest(BaseToscaTest):
-    tests = ["create_deployment_minimal",
-             "create_deployment_maximal",
-             "create_deployment_one_flavor",
-             "create_deployment_two_flavors",
-             "create_deployment_one_image",
-             "create_deployment_two_images",
-             "create_deployment_privilege",
-             "create_deployment_nocreate",
-             "update_deployment",
-             "update_deployment_noupdate",
-             "destroy_deployment",
-             "destroy_deployment_nodelete"
-                           ]
-
-    def cleanup(self):
-        self.try_to_delete(Deployment, name="testdep")
-        self.try_to_delete(Image, name="testimg1")
-        self.try_to_delete(Image, name="testimg2")
-        self.try_to_delete(User, email="test@user.com")
-
-    def create_deployment_minimal(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment"))
-        dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow all")
-        assert(not dep.flavors.exists())   # there should be no flavors
-        assert(not dep.images.exists()) # there should be no images
-
-
-    def create_deployment_maximal(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            props={"accessControl": "allow padmin@vicci.org"}))
-        dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow padmin@vicci.org")
-
-    def create_deployment_one_flavor(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            props={"accessControl": "allow padmin@vicci.org",
-                                                   "flavors": "m1.small"}))
-        dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow padmin@vicci.org")
-
-        assert( sorted([f.name for f in dep.flavors.all()]) == ["m1.small"] )
-
-    def create_deployment_two_flavors(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            props={"accessControl": "allow padmin@vicci.org",
-                                                   "flavors": "m1.small, m1.medium"}))
-        dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow padmin@vicci.org")
-
-        assert( sorted([f.name for f in dep.flavors.all()]) == ["m1.medium", "m1.small"] )
-
-    def create_deployment_one_image(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testimg1", "tosca.nodes.Image") +
-                     self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            reqs=[("testimg1", "tosca.relationships.SupportsImage")]))
-        dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow all")
-        assert( sorted([f.name for f in dep.images.all()]) == ["testimg1"] )
-
-    def create_deployment_two_images(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testimg1", "tosca.nodes.Image") +
-                     self.make_nodetemplate("testimg2", "tosca.nodes.Image") +
-                     self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            reqs=[("testimg1", "tosca.relationships.SupportsImage"),
-                                                  ("testimg2", "tosca.relationships.SupportsImage")]))
-        dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow all")
-        assert( sorted([f.name for f in dep.images.all()]) == ["testimg1", "testimg2"] )
-
-    def create_deployment_privilege(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site") +
-                     self.make_user_template() +
-                     self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            reqs=[("test@user.com", "tosca.relationships.AdminPrivilege")]))
-        dep = self.assert_obj(Deployment, "testdep")
-        user = User.objects.get(email="test@user.com")
-
-        dps = DeploymentPrivilege.objects.filter(user=user, deployment=dep)
-        assert(len(dps) == 1)
-
-    def create_deployment_nocreate(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            props={"no-create": True}))
-        self.assert_noobj(Deployment, "testdep")
-
-    def update_deployment(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment"))
-        orig_dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow all")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            props={"accessControl": "allow padmin@vicci.org"}))
-        dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow padmin@vicci.org")
-        assert(dep.id == orig_dep.id)
-
-    def update_deployment_noupdate(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment"))
-        orig_dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow all")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            props={"accessControl": "allow padmin@vicci.org",
-                                                   "no-update": True}))
-        dep = self.assert_obj(Deployment, "testdep",
-                                   accessControl="allow all")
-        assert(dep.id == orig_dep.id)
-
-    def destroy_deployment(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment"))
-        instance = self.assert_obj(Deployment, "testdep")
-        self.destroy(self.make_nodetemplate("testdep", "tosca.nodes.Deployment"))
-        self.assert_noobj(Deployment, "testdep")
-
-    def destroy_deployment_nodelete(self):
-        self.assert_noobj(Deployment, "testdep")
-        self.execute(self.make_nodetemplate("testdep", "tosca.nodes.Deployment"))
-        instance = self.assert_obj(Deployment, "testdep")
-        self.destroy(self.make_nodetemplate("testdep", "tosca.nodes.Deployment",
-                                            props={"no-delete": True}))
-        self.assert_obj(Deployment, "testdep")
-
-if __name__ == "__main__":
-    DeploymentTest()
-
-
diff --git a/xos/tosca/tests/enginetest.py b/xos/tosca/tests/enginetest.py
deleted file mode 100644
index 6dfb3d7..0000000
--- a/xos/tosca/tests/enginetest.py
+++ /dev/null
@@ -1,69 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Service
-
-class EngineTest(BaseToscaTest):
-    tests = ["intrinsic_get_artifact",
-             "intrinsic_get_script_env",
-             "intrinsic_get_script_env_noisy" ]
-
-    def cleanup(self):
-        self.try_to_delete(Service, name="testservice")
-
-    def intrinsic_get_artifact(self):
-        self.assert_noobj(Service, "testservice")
-        file("/tmp/somevar","w").write("somevalue")
-        self.execute(self.make_nodetemplate("testservice", "tosca.nodes.Service",
-                                            props={"public_key": "{ get_artifact: [ SELF, somevar, LOCAL_FILE] }"},
-                                            artifacts={"somevar": "/tmp/somevar"}))
-        self.assert_obj(Service, "testservice", public_key="somevalue")
-
-    def intrinsic_get_script_env(self):
-        self.assert_noobj(Service, "testservice")
-        file("/tmp/somescript","w").write( \
-"""#! /bin/bash
-FOO=123
-BAR=456
-JUNK=789
-""")
-        self.execute(self.make_nodetemplate("testservice", "tosca.nodes.Service",
-                                            props={"public_key": "{ get_script_env: [ SELF, somescript, BAR, LOCAL_FILE] }"},
-                                            artifacts={"somescript": "/tmp/somescript"}))
-        self.assert_obj(Service, "testservice", public_key="456")
-
-    def intrinsic_get_script_env_noisy(self):
-        self.assert_noobj(Service, "testservice")
-        file("/tmp/somescript","w").write( \
-"""#! /bin/bash
-echo "junk"
-echo "oh no! something got written to stderr! This always breaks stuff!" >&2
-FOO=123
-echo "more junk"
-BAR=456
-echo "even more junk"
-JUNK=789
-echo "BAR=oops"
-""")
-        self.execute(self.make_nodetemplate("testservice", "tosca.nodes.Service",
-                                            props={"public_key": "{ get_script_env: [ SELF, somescript, BAR, LOCAL_FILE] }"},
-                                            artifacts={"somescript": "/tmp/somescript"}))
-        self.assert_obj(Service, "testservice", public_key="456")
-
-if __name__ == "__main__":
-    EngineTest()
diff --git a/xos/tosca/tests/imagetest.py b/xos/tosca/tests/imagetest.py
deleted file mode 100644
index df5019b..0000000
--- a/xos/tosca/tests/imagetest.py
+++ /dev/null
@@ -1,51 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Image
-
-class ImageTest(BaseToscaTest):
-    tests = ["create_image_minimal",
-             "create_image_maximal",
-             "destroy_image",
-                           ]
-
-    def cleanup(self):
-        self.try_to_delete(Image, name="testimg")
-
-    def create_image_minimal(self):
-        self.assert_noobj(Image, "testimg")
-        self.execute(self.make_nodetemplate("testimg", "tosca.nodes.Image"))
-        instance = self.assert_obj(Image, "testimg", disk_format="", container_format="", path=None)
-
-    def create_image_maximal(self):
-        self.assert_noobj(Image, "testimg")
-        self.execute(self.make_nodetemplate("testimg", "tosca.nodes.Image",
-                                            props={"disk_format": "a", "container_format": "b", "path": "c"}))
-        instance = self.assert_obj(Image, "testimg", disk_format="a", container_format="b", path="c")
-
-    def destroy_image(self):
-        self.assert_noobj(Image, "testimg")
-        self.execute(self.make_nodetemplate("testimg", "tosca.nodes.Image"))
-        instance = self.assert_obj(Image, "testimg", disk_format="", container_format="", path=None)
-        self.destroy(self.make_nodetemplate("testimg", "tosca.nodes.Image"))
-        self.assert_noobj(Image, "testimg")
-
-if __name__ == "__main__":
-    ImageTest()
-
-
diff --git a/xos/tosca/tests/networktest.py b/xos/tosca/tests/networktest.py
deleted file mode 100644
index c167761..0000000
--- a/xos/tosca/tests/networktest.py
+++ /dev/null
@@ -1,167 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Network, Slice, NetworkTemplate, NetworkSlice
-
-class NetworkTest(BaseToscaTest):
-    tests = ["create_network_minimal",
-             "create_network_maximal",
-             "create_network_connected",
-             "create_network_connected_two_slices",
-             "update_network_labels",
-             "destroy_network"]
-
-    def cleanup(self):
-        self.try_to_delete(Network, name="test_net")
-        self.try_to_delete(Slice, name="testsite_slice1")
-        self.try_to_delete(Slice, name="testsite_slice2")
-
-    @property
-    def slice1(self):
-        return Slice.objects.get(name="testsite_slice1")
-
-    @property
-    def slice2(self):
-        return Slice.objects.get(name="testsite_slice2")
-
-    @property
-    def private(Self):
-        return NetworkTemplate.objects.get(name="Private")
-
-
-    def get_base_templates(self):
-        return self.make_nodetemplate("testsite", "tosca.nodes.Site") + \
-               self.make_nodetemplate("testsite_slice1", "tosca.nodes.Slice", reqs=[("testsite", "tosca.relationships.MemberOfSite")]) + \
-               self.make_nodetemplate("testsite_slice2", "tosca.nodes.Slice", reqs=[("testsite", "tosca.relationships.MemberOfSite")]) + \
-               self.make_nodetemplate("Private", "tosca.nodes.NetworkTemplate")
-
-    def create_network_minimal(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]))
-        net=self.assert_obj(Network, "test_net", owner=self.slice1, template=self.private)
-
-        ns = NetworkSlice.objects.filter(slice=self.slice1, network=net)
-        assert(not ns)
-
-    def create_network_maximal(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network.XOS",
-                                            props={"ports": "tcp/1234, udp/5678",
-                                                   "labels": "foo,bar",
-                                                   "permit_all_slices": False},
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]))
-        net=self.assert_obj(Network, "test_net",
-                            owner=self.slice1,
-                            template=self.private,
-                            ports="tcp/1234, udp/5678",
-                            labels="foo,bar",
-                            permit_all_slices=False)
-
-        ns = NetworkSlice.objects.filter(slice=self.slice1, network=net)
-        assert(not ns)
-
-    def create_network_connected(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate"),
-                                                  ("testsite_slice1", "tosca.relationships.ConnectsToSlice")]))
-
-        net=self.assert_obj(Network, "test_net", owner=self.slice1, template=self.private)
-
-        ns = NetworkSlice.objects.filter(slice=self.slice1, network=net)
-        assert(ns)
-
-    def create_network_connected_two_slices(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate"),
-                                                  ("testsite_slice1", "tosca.relationships.ConnectsToSlice"),
-                                                  ("testsite_slice2", "tosca.relationships.ConnectsToSlice")]))
-
-        net=self.assert_obj(Network, "test_net", owner=self.slice1, template=self.private)
-
-        ns = NetworkSlice.objects.filter(slice=self.slice1, network=net)
-        assert(ns)
-
-        ns = NetworkSlice.objects.filter(slice=self.slice1, network=net)
-        assert(ns)
-
-    def update_network_labels(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network.XOS",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]))
-        net=self.assert_obj(Network, "test_net", owner=self.slice1, template=self.private, labels=None)
-
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network.XOS",
-                                            props={"labels": "testlabel"},
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]))
-
-        updated_net = self.assert_obj(Network, "test_net", owner=self.slice1, template=self.private, labels="testlabel")
-
-        assert(net.id == updated_net.id)
-
-    def update_network_ports(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network.XOS",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]))
-        net=self.assert_obj(Network, "test_net", owner=self.slice1, template=self.private, labels=None, ports=None)
-
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network.XOS",
-                                            props={"port": "tcp/2222, udp/3333"},
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]))
-
-        updated_net = self.assert_obj(Network, "test_net", owner=self.slice1, template=self.private, labels=None, ports="tcp/2222, udp/3333")
-
-        assert(net.id == updated_net.id)
-
-    def destroy_network(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]))
-        net=self.assert_obj(Network, "test_net", owner=self.slice1, template=self.private)
-
-        self.destroy(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]))
-
-        self.assert_noobj(Network, "test_net")
-
-if __name__ == "__main__":
-    NetworkTest()
-
-
diff --git a/xos/tosca/tests/nodetest.py b/xos/tosca/tests/nodetest.py
deleted file mode 100644
index 81cf90e..0000000
--- a/xos/tosca/tests/nodetest.py
+++ /dev/null
@@ -1,106 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Node, Site, Deployment, SiteDeployment
-
-class NodeTest(BaseToscaTest):
-    tests = ["create_node_minimal",
-             "create_node_nocreate",
-             "destroy_node",
-             "destroy_node_nodelete",
-                           ]
-
-    def cleanup(self):
-        self.try_to_delete(Node, name="testnode")
-        self.try_to_delete(Site, name="testsite")
-        self.try_to_delete(Deployment, name="testdep")
-
-    def get_base_templates(self):
-        return \
-"""
-    testdep:
-      type: tosca.nodes.Deployment
-    testcon:
-      type: tosca.nodes.Controller
-      requirements:
-        - deployment:
-            node: testdep
-            relationship: tosca.relationships.ControllerDeployment
-    testsite:
-      type: tosca.nodes.Site
-      properties:
-        display_name: My Site
-      requirements:
-        - deployment:
-             node: testdep
-             relationship: tosca.relationships.MemberOfDeployment
-        - controller:
-             node: testcon
-             relationship: tosca.relationships.UsesController
-"""
-
-    def create_node_minimal(self):
-        self.assert_noobj(Node, "testnode")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testnode", "tosca.nodes.Node",
-                       reqs=[("testsite", "tosca.relationships.MemberOfSite"),
-                             ("testdep", "tosca.relationships.MemberOfDeployment")]))
-        node = self.assert_obj(Node, "testnode")
-        assert(node.site_deployment is not None)
-        assert(node.site is not None)
-
-    def create_node_nocreate(self):
-        self.assert_noobj(Node, "testnode")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testnode", "tosca.nodes.Node",
-                       reqs=[("testsite", "tosca.relationships.MemberOfSite"),
-                             ("testdep", "tosca.relationships.MemberOfDeployment")],
-                       props={"no-create": True}))
-        self.assert_noobj(Node, "testnode")
-
-    def destroy_node(self):
-        self.assert_noobj(Node, "testnode")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testnode", "tosca.nodes.Node",
-                       reqs=[("testsite", "tosca.relationships.MemberOfSite"),
-                             ("testdep", "tosca.relationships.MemberOfDeployment")]))
-        self.assert_obj(Node, "testnode")
-        self.destroy(self.get_base_templates() +
-                     self.make_nodetemplate("testnode", "tosca.nodes.Node",
-                       reqs=[("testsite", "tosca.relationships.MemberOfSite"),
-                             ("testdep", "tosca.relationships.MemberOfDeployment")]))
-        self.assert_noobj(Node, "testnode")
-
-    def destroy_node_nodelete(self):
-        self.assert_noobj(Node, "testnode")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testnode", "tosca.nodes.Node",
-                       reqs=[("testsite", "tosca.relationships.MemberOfSite"),
-                             ("testdep", "tosca.relationships.MemberOfDeployment")]))
-        self.assert_obj(Node, "testnode")
-        self.destroy(self.get_base_templates() +
-                     self.make_nodetemplate("testnode", "tosca.nodes.Node",
-                       reqs=[("testsite", "tosca.relationships.MemberOfSite"),
-                             ("testdep", "tosca.relationships.MemberOfDeployment")],
-                       props={"no-delete": True}))
-        self.assert_obj(Node, "testnode")
-
-if __name__ == "__main__":
-    NodeTest()
-
-
diff --git a/xos/tosca/tests/observerContainerTest.py b/xos/tosca/tests/observerContainerTest.py
deleted file mode 100644
index 0d8fb1a..0000000
--- a/xos/tosca/tests/observerContainerTest.py
+++ /dev/null
@@ -1,111 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from observertest import BaseObserverToscaTest
-
-from core.models import Instance, Site
-
-# Note that as a side effect, these tests will also create a Site
-
-class ObserverContainerTest(BaseObserverToscaTest):
-    tests = ["create_container"]
-    # hide_observer_output = False # uncomment to display lots of stuff to screen
-
-    def cleanup(self):
-        # We don't want to leak resources, so we make sure to let the observer
-        # attempt to delete these objects.
-        self.try_to_delete(Instance, purge=False, name="test_compute1")
-        self.try_to_delete(Site, purge=False, name="testsite")
-        self.run_observer()
-        # The site objects don't seem to go away nicely, they linger about and
-        # cause an IntegrityError due to a duplicate login_base
-        self.try_to_delete(Site, purge=True, name="testsite")
-
-    def get_base_templates(self):
-        return self.make_nodetemplate("testsite", "tosca.nodes.Site") + \
-               self.make_nodetemplate("testsite_slice1", "tosca.nodes.Slice", reqs=[("testsite", "tosca.relationships.MemberOfSite")]) + \
-               self.make_nodetemplate("andybavier/docker-vcpe", "tosca.nodes.Image", props={"kind": "container", "container_format": "na", "disk_format": "na"})
-
-    def create_container(self):
-        self.assert_noobj(Instance, "test_compute1")
-        self.execute(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1", disk_size="1 GB", mem_size="513 MB", isolation="container",
-                                       reqs=[("andybavier/docker-vcpe", "tosca.relationships.UsesImage")],
-                                       ))
-        instance = self.assert_obj(Instance, "test_compute1")
-        assert(instance.flavor.name == "m1.small")
-
-        # first pass makes the Networks
-        self.run_model_policy(save_output="/tmp/instancetest:create_container:model_policy_first")
-
-        # XXX deal with bug where
-        instance = self.assert_obj(Instance, "test_compute1")
-        instance.save()
-
-        # second pass makes the NetworkControllers
-        self.run_model_policy(save_output="/tmp/instancetest:create_container:model_policy_second")
-
-        # first observer pass should make any necessary networks or ports
-        self.run_observer(save_output="/tmp/instancetest:create_container:observer_first")
-
-        # reset the exponential backoff
-        instance = self.assert_obj(Instance, "test_compute1")
-        instance.backend_register="{}"
-        instance.save()
-
-        # we need to reset the companion instance's exponential backoff too
-        companion_instance = Instance.objects.filter(slice=instance.slice, isolation="vm")
-        assert(companion_instance)
-        companion_instance = companion_instance[0]
-        companion_instance.backend_register="{}"
-        companion_instance.save()
-
-        # third pass reset lazy_blocked
-        self.run_model_policy(save_output="/tmp/instancetest:create_container:model_policy_third")
-
-        # second observer pass should instantiate the controller networks
-        #    (might instantiate the instance, too)
-        self.run_observer(save_output="/tmp/instancetest:create_container:observer_second")
-
-        # reset the exponential backoff
-        instance = self.assert_obj(Instance, "test_compute1")
-        instance.backend_register="{}"
-        instance.save()
-
-        # we need to reset the companion instance's exponential backoff too
-        companion_instance = Instance.objects.filter(slice=instance.slice, isolation="vm")
-        assert(companion_instance)
-        companion_instance = companion_instance[0]
-        companion_instance.backend_register="{}"
-        companion_instance.save()
-
-        # third observer pass should instantiate the companion instance
-        self.run_observer(save_output="/tmp/instancetest:create_container:observer_third")
-
-        # third observer pass should instantiate the instance
-        self.run_observer(save_output="/tmp/instancetest:create_container:observer_fourth")
-
-        instance = self.assert_obj(Instance, "test_compute1")
-
-        assert(instance.instance_id is not None)
-        assert(instance.instance_name is not None)
-
-        # there should be one port on the private network
-        assert(instance.ports.count() == 1)
-
-if __name__ == "__main__":
-    ObserverContainerTest()
-
diff --git a/xos/tosca/tests/observerImageTest.py b/xos/tosca/tests/observerImageTest.py
deleted file mode 100644
index 0b1a063..0000000
--- a/xos/tosca/tests/observerImageTest.py
+++ /dev/null
@@ -1,64 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from observertest import BaseObserverToscaTest
-
-from core.models import Image, Deployment, ControllerImages
-
-# Note that as a side effect, these tests will also create a Site
-
-class ObserverImageTest(BaseObserverToscaTest):
-    tests = ["create_image"]
-    # hide_observer_output = False # uncomment to display lots of stuff to screen
-
-    def cleanup(self):
-        # We don't want to leak resources, so we make sure to let the observer
-        # attempt to delete these objects.
-        self.try_to_delete(Image, purge=False, name="testimg")
-        self.run_observer()
-        self.try_to_delete(Image, purge=True, name="testimg")
-
-    def create_image(self):
-        self.assert_noobj(Image, "testimg")
-        file("/tmp/testimg","w").write("this_is_a_test")
-        self.execute(self.make_nodetemplate(self.get_usable_deployment(), "tosca.nodes.Deployment",
-                                            props={"no-delete": True},
-                                            reqs=[("testimg", "tosca.relationships.SupportsImage")]) +
-                     self.make_nodetemplate("testimg", "tosca.nodes.Image",
-                                            props={"path": "/tmp/testimg"}))
-        image = self.assert_obj(Image, "testimg")
-
-        self.run_model_policy(save_output="/tmp/imagetest:create_image:model_policy")
-
-        # make sure a ControllerImages object was created
-        cims = ControllerImages.objects.filter(image=image)
-        assert(len(cims) == 1)
-
-        # first observer pass should make any necessary networks or ports
-        self.run_observer(save_output="/tmp/imagetest:create_image:observer")
-
-        # reset the exponential backoff
-        image = self.assert_obj(Image, "testimg")
-
-        # make sure the ControllerImages object has its image_id filled in
-        cims = ControllerImages.objects.filter(image=image)
-        assert(len(cims) == 1)
-        assert(cims[0].glance_image_id is not None)
-        assert(cims[0].glance_image_id != "")
-
-if __name__ == "__main__":
-    ObserverImageTest()
-
diff --git a/xos/tosca/tests/observerSiteTest.py b/xos/tosca/tests/observerSiteTest.py
deleted file mode 100644
index 71ca928..0000000
--- a/xos/tosca/tests/observerSiteTest.py
+++ /dev/null
@@ -1,71 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from observertest import BaseObserverToscaTest
-
-from core.models import Site, Deployment, ControllerSite
-
-# Note that as a side effect, these tests will also create a Site
-
-class ObserverSiteTest(BaseObserverToscaTest):
-    tests = ["create_site"]
-    # hide_observer_output = False # uncomment to display lots of stuff to screen
-
-    def cleanup(self):
-        # We don't want to leak rezsources, so we make sure to let the observer
-        # attempt to delete these objects.
-        self.try_to_delete(Site, purge=False, login_base="testsite")
-        self.run_observer()
-        self.try_to_delete(Site, purge=True, login_base="testsite")
-
-    def create_site(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate(self.get_usable_deployment(), "tosca.nodes.Deployment",
-                                            props={"no-delete": True}) +  \
-"""
-    testsite:
-      type: tosca.nodes.Site
-      properties:
-          site_url: http://opencloud.us/
-      requirements:
-          - deployment:
-               node: %s
-               relationship: tosca.relationships.SiteDeployment
-          - controller:
-               node: %s
-               relationship: tosca.relationships.UsesController
-""" % (self.get_usable_deployment(), self.get_usable_controller()))
-
-        testsite = self.assert_obj(Site, "testsite")
-
-        self.run_model_policy(save_output="/tmp/sitetest:create_site:model_policy")
-
-        # make sure a ControllerSite object was created
-        cs = ControllerSite.objects.filter(site=testsite)
-        assert(len(cs) == 1)
-
-        self.run_observer(save_output="/tmp/sitetest:create_site:observer")
-
-        testsite = self.assert_obj(Site, "testsite")
-
-        cs = ControllerSite.objects.filter(site=testsite)
-        assert(len(cs) == 1)
-        assert(cs[0].tenant_id is not None)
-        assert(cs[0].tenant_id != "")
-
-if __name__ == "__main__":
-    ObserverSiteTest()
-
diff --git a/xos/tosca/tests/observerSliceTest.py b/xos/tosca/tests/observerSliceTest.py
deleted file mode 100644
index 83697d3..0000000
--- a/xos/tosca/tests/observerSliceTest.py
+++ /dev/null
@@ -1,64 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from observertest import BaseObserverToscaTest
-
-from core.models import Site, Deployment, Slice, ControllerSlice
-
-# Note that as a side effect, these tests will also create a Site
-
-class ObserverSliceTest(BaseObserverToscaTest):
-    tests = ["create_slice"]
-    # hide_observer_output = False # uncomment to display lots of stuff to screen
-
-    def cleanup(self):
-        # We don't want to leak resources, so we make sure to let the observer
-        # attempt to delete these objects.
-        self.try_to_delete(Slice, purge=False, name="testsite_slice1")
-        self.try_to_delete(Site, purge=False, login_base="testsite")
-        self.run_observer()
-        self.try_to_delete(Slice, purge=True, name="testsite_slice1")
-        self.try_to_delete(Site, purge=True, login_base="testsite")
-
-    def create_slice(self):
-        self.assert_noobj(Site, "testsite")
-        self.assert_noobj(Slice, "testsite_slice1")
-        self.execute(self.make_nodetemplate(self.get_usable_deployment(), "tosca.nodes.Deployment",
-                                            props={"no-delete": True}) +
-                     self.make_nodetemplate("testsite", "tosca.nodes.Site") + \
-                     self.make_nodetemplate("testsite_slice1", "tosca.nodes.Slice", reqs=[("testsite", "tosca.relationships.MemberOfSite")]))
-
-        testsite = self.assert_obj(Site, "testsite")
-        testslice = self.assert_obj(Slice, "testsite_slice1")
-
-        self.run_model_policy(save_output="/tmp/slicetest:create_slice:model_policy")
-
-        # make sure a ControllerSlice object was created
-        cs = ControllerSlice.objects.filter(slice=testslice)
-        assert(len(cs) == 1)
-
-        self.run_observer(save_output="/tmp/slicetest:create_slice:observer")
-
-        testslice = self.assert_obj(Slice, "testsite_slice1")
-
-        cs = ControllerSlice.objects.filter(slice=testslice)
-        assert(len(cs) == 1)
-        assert(cs[0].tenant_id is not None)
-        assert(cs[0].tenant_id != "")
-
-if __name__ == "__main__":
-    ObserverSliceTest()
-
diff --git a/xos/tosca/tests/observerUserTest.py b/xos/tosca/tests/observerUserTest.py
deleted file mode 100644
index bf398c4..0000000
--- a/xos/tosca/tests/observerUserTest.py
+++ /dev/null
@@ -1,97 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from observertest import BaseObserverToscaTest
-
-from core.models import Site, Deployment, User, ControllerUser
-
-# Note that as a side effect, these tests will also create a Site
-
-class ObserverUserTest(BaseObserverToscaTest):
-    tests = ["create_user"]
-    # hide_observer_output = False # uncomment to display lots of stuff to screen
-
-    def cleanup(self):
-        # We don't want to leak resources, so we make sure to let the observer
-        # attempt to delete these objects.
-        self.try_to_delete(User, purge=False, email="johndoe@foo.bar")
-        self.try_to_delete(Site, purge=False, login_base="testsite")
-        self.run_observer()
-        self.try_to_delete(User, purge=True, email="johndoe@foo.bar")
-        self.try_to_delete(Site, purge=True, login_base="testsite")
-
-    def assert_nouser(self, email):
-        assert(not User.objects.filter(email=email))
-
-    def assert_user(self, email, **kwargs):
-        obj = User.objects.get(email=email)
-        assert(obj)
-        for (k,v) in kwargs.items():
-            if (getattr(obj,k,None) != v):
-                print "Object %s property '%s' is '%s' and should be '%s'" % (obj, k, getattr(obj,k,None), v)
-                assert(False)
-        return obj
-
-    def create_user(self):
-        self.assert_noobj(Site, "testsite")
-        self.assert_nouser("johndoe@foo.bar")
-        self.execute(self.make_nodetemplate(self.get_usable_deployment(), "tosca.nodes.Deployment",
-                                            props={"no-delete": True}) +  \
-"""
-    testsite:
-      type: tosca.nodes.Site
-      properties:
-          site_url: http://opencloud.us/
-      requirements:
-          - deployment:
-               node: %s
-               relationship: tosca.relationships.SiteDeployment
-          - controller:
-               node: %s
-               relationship: tosca.relationships.UsesController
-    johndoe@foo.bar:
-      type: tosca.nodes.User
-      properties:
-          password: letmein
-          firstname: john
-          lastname: doe
-      requirements:
-          - site:
-              node: testsite
-              relationship: tosca.relationships.MemberOfSite
-""" % (self.get_usable_deployment(), self.get_usable_controller()))
-
-        testsite = self.assert_obj(Site, "testsite")
-        testuser = self.assert_user("johndoe@foo.bar")
-
-        self.run_model_policy(save_output="/tmp/usertest:create_user:model_policy")
-
-        # make sure a ControllerSite object was created
-        cu = ControllerUser.objects.filter(user=testuser)
-        assert(len(cu) == 1)
-
-        self.run_observer(save_output="/tmp/usertest:create_user:observer")
-
-        testuser = self.assert_user("johndoe@foo.bar")
-
-        cu = ControllerUser.objects.filter(user=testuser)
-        assert(len(cu) == 1)
-        assert(cu[0].kuser_id is not None)
-        assert(cu[0].kuser_id != "")
-
-if __name__ == "__main__":
-    ObserverUserTest()
-
diff --git a/xos/tosca/tests/observerVMTest.py b/xos/tosca/tests/observerVMTest.py
deleted file mode 100644
index f6957bb..0000000
--- a/xos/tosca/tests/observerVMTest.py
+++ /dev/null
@@ -1,87 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from observertest import BaseObserverToscaTest
-
-from core.models import Instance, Site
-
-# Note that as a side effect, these tests will also create a Site
-
-class ObserverVMTest(BaseObserverToscaTest):
-    tests = ["create_vm"]
-    # hide_observer_output = False # uncomment to display lots of stuff to screen
-
-    def cleanup(self):
-        # We don't want to leak resources, so we make sure to let the observer
-        # attempt to delete these objects.
-        self.try_to_delete(Instance, purge=False, name="test_compute1")
-        self.try_to_delete(Site, purge=False, name="testsite")
-        self.run_observer()
-        # The site objects don't seem to go away nicely, they linger about and
-        # cause an IntegrityError due to a duplicate login_base
-        self.try_to_delete(Site, purge=True, name="testsite")
-
-    def get_base_templates(self):
-        return self.make_nodetemplate("testsite", "tosca.nodes.Site") + \
-               self.make_nodetemplate("testsite_slice1", "tosca.nodes.Slice", reqs=[("testsite", "tosca.relationships.MemberOfSite")])
-
-    def create_vm(self):
-        self.assert_noobj(Instance, "test_compute1")
-        self.execute(self.get_base_templates() +
-                     self.make_compute("testsite_slice1", "test_compute1", disk_size="1 GB", mem_size="513 MB"))
-        instance = self.assert_obj(Instance, "test_compute1")
-        assert(instance.flavor.name == "m1.small")
-
-        # first pass makes the Networks
-        self.run_model_policy(save_output="/tmp/instancetest:create_vm:model_policy_first")
-
-        # second pass makes the NetworkControllers
-        self.run_model_policy(save_output="/tmp/instancetest:create_vm:model_policy_second")
-
-        # first observer pass should make any necessary networks or ports
-        self.run_observer(save_output="/tmp/instancetest:create_vm:observer_first")
-
-        # reset the exponential backoff
-        instance = self.assert_obj(Instance, "test_compute1")
-        instance.backend_register="{}"
-        instance.save()
-
-        # third pass reset lazy_blocked
-        self.run_model_policy(save_output="/tmp/instancetest:create_vm:model_policy_third")
-
-        # second observer pass should instantiate the controller networks
-        #    (might instantiate the instance, too)
-        self.run_observer(save_output="/tmp/instancetest:create_vm:observer_second")
-
-        # reset the exponential backoff
-        instance = self.assert_obj(Instance, "test_compute1")
-        instance.backend_register="{}"
-        instance.save()
-
-        # third observer pass should instantiate the instance
-        self.run_observer(save_output="/tmp/instancetest:create_vm:observer_third")
-
-        instance = self.assert_obj(Instance, "test_compute1")
-
-        assert(instance.instance_id is not None)
-        assert(instance.instance_name is not None)
-
-        # there should be a port on the private network and a port on nat-net
-        assert(instance.ports.count() == 2)
-
-if __name__ == "__main__":
-    ObserverVMTest()
-
diff --git a/xos/tosca/tests/porttest.py b/xos/tosca/tests/porttest.py
deleted file mode 100644
index 693a9d8..0000000
--- a/xos/tosca/tests/porttest.py
+++ /dev/null
@@ -1,178 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Network, Slice, NetworkTemplate, NetworkSlice, Port, Instance
-
-class PortTest(BaseToscaTest):
-    tests = ["create_port_minimal",
-             "create_two_ports",
-             "create_four_ports",
-             "add_port_after_network"]
-
-    def cleanup(self):
-        self.try_to_delete(Instance, name="test_compute1")
-        self.try_to_delete(Instance, name="test_compute2")
-        self.try_to_delete(Network, name="test_net")
-        self.try_to_delete(Slice, name="testsite_slice1")
-        self.try_to_delete(Slice, name="testsite_slice2")
-
-    @property
-    def slice1(self):
-        return Slice.objects.get(name="testsite_slice1")
-
-    @property
-    def slice2(self):
-        return Slice.objects.get(name="testsite_slice2")
-
-    @property
-    def private(self):
-        return NetworkTemplate.objects.get(name="Private")
-
-    @property
-    def test_slice1_1(self):
-        return Instance.objects.get(name="test_slice1-1")
-
-    @property
-    def test_slice1_2(self):
-        return Instance.objects.get(name="test_slice1-2")
-
-    @property
-    def test_slice2_1(self):
-        return Instance.objects.get(name="test_slice2-1")
-
-    @property
-    def test_slice2_2(self):
-        return Instance.objects.get(name="test_slice2-2")
-
-    def get_base_templates(self):
-        return self.make_nodetemplate("testsite", "tosca.nodes.Site") + \
-               self.make_nodetemplate("testsite_slice1", "tosca.nodes.Slice", reqs=[("testsite", "tosca.relationships.MemberOfSite")]) + \
-               self.make_nodetemplate("testsite_slice2", "tosca.nodes.Slice", reqs=[("testsite", "tosca.relationships.MemberOfSite")]) + \
-               self.make_nodetemplate("Private", "tosca.nodes.NetworkTemplate") + \
-               self.make_compute("testsite_slice1", "test_slice1-1") + \
-               self.make_compute("testsite_slice1", "test_slice1-2") +\
-               self.make_compute("testsite_slice2", "test_slice2-1") + \
-               self.make_compute("testsite_slice2", "test_slice2-2")
-
-    def create_port_minimal(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]) +
-                     self.make_nodetemplate("test_port", "tosca.nodes.network.Port",
-                                            reqs=[("test_net", "tosca.relationships.network.LinksTo"),
-                                                  ("test_slice1-1", "tosca.relationships.network.BindsTo")]))
-
-        net=self.assert_obj(Network, "test_net")
-
-        port=Port.objects.filter(network=net, instance=self.test_slice1_1)
-        assert(len(port)==1)
-        port=port[0]
-
-    def create_two_ports(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]) +
-                     self.make_nodetemplate("test_port1", "tosca.nodes.network.Port",
-                                            reqs=[("test_net", "tosca.relationships.network.LinksTo"),
-                                                  ("test_slice1-1", "tosca.relationships.network.BindsTo")]) +
-                     self.make_nodetemplate("test_port2", "tosca.nodes.network.Port",
-                                            reqs=[("test_net", "tosca.relationships.network.LinksTo"),
-                                                  ("test_slice1-2", "tosca.relationships.network.BindsTo")]))
-
-        net=self.assert_obj(Network, "test_net")
-
-        port=Port.objects.filter(network=net, instance=self.test_slice1_1)
-        assert(len(port)==1)
-        port=port[0]
-
-        port=Port.objects.filter(network=net, instance=self.test_slice1_2)
-        assert(len(port)==1)
-        port=port[0]
-
-    def create_four_ports(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]) +
-                     self.make_nodetemplate("test_port1", "tosca.nodes.network.Port",
-                                            reqs=[("test_net", "tosca.relationships.network.LinksTo"),
-                                                  ("test_slice1-1", "tosca.relationships.network.BindsTo")]) +
-                     self.make_nodetemplate("test_port2", "tosca.nodes.network.Port",
-                                            reqs=[("test_net", "tosca.relationships.network.LinksTo"),
-                                                  ("test_slice1-2", "tosca.relationships.network.BindsTo")]) +
-                     self.make_nodetemplate("test_port3", "tosca.nodes.network.Port",
-                                            reqs=[("test_net", "tosca.relationships.network.LinksTo"),
-                                                  ("test_slice2-1", "tosca.relationships.network.BindsTo")]) +
-                     self.make_nodetemplate("test_port4", "tosca.nodes.network.Port",
-                                            reqs=[("test_net", "tosca.relationships.network.LinksTo"),
-                                                  ("test_slice2-2", "tosca.relationships.network.BindsTo")]))
-
-        net=self.assert_obj(Network, "test_net")
-
-        port=Port.objects.filter(network=net, instance=self.test_slice1_1)
-        assert(len(port)==1)
-        port=port[0]
-
-        port=Port.objects.filter(network=net, instance=self.test_slice1_2)
-        assert(len(port)==1)
-        port=port[0]
-
-        port=Port.objects.filter(network=net, instance=self.test_slice2_2)
-        assert(len(port)==1)
-        port=port[0]
-
-        port=Port.objects.filter(network=net, instance=self.test_slice2_2)
-        assert(len(port)==1)
-        port=port[0]
-
-    def add_port_after_network(self):
-        self.assert_noobj(Network, "test_net")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]))
-
-
-        orig_net=self.assert_obj(Network, "test_net")
-
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test_net", "tosca.nodes.network.Network",
-                                            reqs=[("testsite_slice1", "tosca.relationships.MemberOfSlice"),
-                                                  ("Private", "tosca.relationships.UsesNetworkTemplate")]) +
-                     self.make_nodetemplate("test_port1", "tosca.nodes.network.Port",
-                                            reqs=[("test_net", "tosca.relationships.network.LinksTo"),
-                                                  ("test_slice1-1", "tosca.relationships.network.BindsTo")]))
-
-        net=self.assert_obj(Network, "test_net")
-
-        assert(orig_net.id == net.id)
-
-        port=Port.objects.filter(network=net, instance=self.test_slice1_1)
-        assert(len(port)==1)
-        port=port[0]
-
-
-if __name__ == "__main__":
-    PortTest()
-
-
diff --git a/xos/tosca/tests/servicetest.py b/xos/tosca/tests/servicetest.py
deleted file mode 100644
index 0b427dc..0000000
--- a/xos/tosca/tests/servicetest.py
+++ /dev/null
@@ -1,90 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Service
-
-class ServiceTest(BaseToscaTest):
-    tests = ["create_service_minimal",
-             "create_service_notpublished",
-             "create_service_notenabled",
-             "create_service_public_key",
-             "update_service_notpublished",
-             "create_service_maximal",
-             "destroy_service"]
-
-    def cleanup(self):
-        self.try_to_delete(Service, name="test_svc")
-
-    def create_service_minimal(self):
-        self.assert_noobj(Service, "test_svc")
-        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service"))
-        self.assert_obj(Service, "test_svc", kind="generic", published=True, enabled=True)
-
-    def create_service_notpublished(self):
-        self.assert_noobj(Service, "test_svc")
-        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service", {"published": False}))
-        self.assert_obj(Service, "test_svc", kind="generic", published=False, enabled=True)
-
-    def create_service_notenabled(self):
-        self.assert_noobj(Service, "test_svc")
-        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service", {"enabled": False}))
-        self.assert_obj(Service, "test_svc", kind="generic", published=True, enabled=False)
-
-    def create_service_public_key(self):
-        self.assert_noobj(Service, "test_svc")
-        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service", {"public_key": "foobar"}))
-        self.assert_obj(Service, "test_svc", kind="generic", published=True, enabled=True, public_key="foobar")
-
-    def update_service_notpublished(self):
-        self.assert_noobj(Service, "test_svc")
-        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service"))
-        original_obj = self.assert_obj(Service, "test_svc", kind="generic", published=True, enabled=True)
-        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service", {"published": False}))
-        updated_obj = self.assert_obj(Service, "test_svc", kind="generic", published=False, enabled=True)
-        assert(original_obj.id == updated_obj.id)
-
-    def create_service_maximal(self):
-        self.assert_noobj(Service, "test_svc")
-        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service",
-                        {"kind": "testkind",
-                         "published": False,
-                         "enabled": False,
-                         "view_url": "http://foo/",
-                         "icon_url": "http://bar/",
-                         "public_key": "foobar",
-                         "versionNumber": "1.2"} ))
-        self.assert_obj(Service, "test_svc",
-                         kind="testkind",
-                         published=False,
-                         enabled=False,
-                         view_url="http://foo/",
-                         icon_url="http://bar/",
-                         public_key="foobar",
-                         versionNumber="1.2")
-
-    def destroy_service(self):
-        self.assert_noobj(Service, "test_svc")
-        self.execute(self.make_nodetemplate("test_svc", "tosca.nodes.Service"))
-        self.assert_obj(Service, "test_svc", kind="generic", published=True, enabled=True)
-        self.destroy(self.make_nodetemplate("test_svc", "tosca.nodes.Service"))
-        self.assert_noobj(Service, "test_svc")
-
-if __name__ == "__main__":
-    ServiceTest()
-
-
diff --git a/xos/tosca/tests/sitetest.py b/xos/tosca/tests/sitetest.py
deleted file mode 100644
index 4c17dbc..0000000
--- a/xos/tosca/tests/sitetest.py
+++ /dev/null
@@ -1,126 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Site, SitePrivilege, User
-
-class SiteTest(BaseToscaTest):
-    tests = ["create_site_minimal",
-             "create_site_privilege_tech",
-             "create_site_privilege_admin",
-             "create_site_privilege_pi",
-             "create_site_nocreate",
-             "update_site",
-             "update_site_noupdate",
-             "destroy_site",
-             "destroy_site_nodelete"
-                           ]
-
-    def cleanup(self):
-        self.try_to_delete(Site, name="testsite")
-
-    def create_site_minimal(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site"))
-        site = self.assert_obj(Site, "testsite")
-
-    def create_site_privilege_tech(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site") +
-                     self.make_nodetemplate("test@user.com", "tosca.nodes.User",
-                         props = {"firstname": "test", "lastname": "user", "password": "letmein"},
-                         reqs = [("testsite", "tosca.relationships.MemberOfSite"),
-                                 ("testsite", "tosca.relationships.TechPrivilege")]))
-        site = self.assert_obj(Site, "testsite")
-        user = User.objects.get(email="test@user.com")
-
-        sps = SitePrivilege.objects.filter(site=site, user=user)
-        assert(len(sps) == 1)
-        assert(sps[0].role.role == "tech")
-
-    def create_site_privilege_admin(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site") +
-                     self.make_nodetemplate("test@user.com", "tosca.nodes.User",
-                         props = {"firstname": "test", "lastname": "user", "password": "letmein"},
-                         reqs = [("testsite", "tosca.relationships.MemberOfSite"),
-                                 ("testsite", "tosca.relationships.AdminPrivilege")]))
-        site = self.assert_obj(Site, "testsite")
-        user = User.objects.get(email="test@user.com")
-
-        sps = SitePrivilege.objects.filter(site=site, user=user)
-        assert(len(sps) == 1)
-        assert(sps[0].role.role == "admin")
-
-    def create_site_privilege_pi(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site") +
-                     self.make_nodetemplate("test@user.com", "tosca.nodes.User",
-                         props = {"firstname": "test", "lastname": "user", "password": "letmein"},
-                         reqs = [("testsite", "tosca.relationships.MemberOfSite"),
-                                 ("testsite", "tosca.relationships.PIPrivilege")]))
-        site = self.assert_obj(Site, "testsite")
-        user = User.objects.get(email="test@user.com")
-
-        sps = SitePrivilege.objects.filter(site=site, user=user)
-        assert(len(sps) == 1)
-        assert(sps[0].role.role == "pi")
-
-    def create_site_nocreate(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site",
-                                            props={"no-create": True}))
-        site = self.assert_noobj(Site, "testsite")
-
-    def update_site(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site"))
-        orig_site = self.assert_obj(Site, "testsite", site_url=None)
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site",
-                                            props={"site_url": "http://foo.com/"}))
-        site = self.assert_obj(Site, "testsite", site_url="http://foo.com/")
-        assert(orig_site.id == site.id)
-
-    def update_site_noupdate(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site"))
-        orig_site = self.assert_obj(Site, "testsite", site_url=None)
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site",
-                                            props={"site_url": "http://foo.com/",
-                                                   "no-update": True}))
-        site = self.assert_obj(Site, "testsite", site_url=None)
-        assert(orig_site.id == site.id)
-
-    def destroy_site(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site"))
-        site = self.assert_obj(Site, "testsite")
-        self.destroy(self.make_nodetemplate("testsite", "tosca.nodes.Site"))
-        self.assert_noobj(Site, "testsite")
-
-    def destroy_site_nodelete(self):
-        self.assert_noobj(Site, "testsite")
-        self.execute(self.make_nodetemplate("testsite", "tosca.nodes.Site"))
-        site = self.assert_obj(Site, "testsite")
-        self.destroy(self.make_nodetemplate("testsite", "tosca.nodes.Site",
-                                            props={"no-delete": True}))
-        self.assert_obj(Site, "testsite")
-
-if __name__ == "__main__":
-    SiteTest()
-
-
diff --git a/xos/tosca/tests/slicetest.py b/xos/tosca/tests/slicetest.py
deleted file mode 100644
index ee24e07..0000000
--- a/xos/tosca/tests/slicetest.py
+++ /dev/null
@@ -1,128 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import Slice, Site, User, SlicePrivilege
-
-class SliceTest(BaseToscaTest):
-    tests = ["create_slice_minimal",
-             "create_slice_maximal",
-             "create_slice_privilege",
-             "create_slice_nocreate",
-             "update_slice",
-             "update_slice_noupdate",
-             "destroy_slice",
-             "destroy_slice_nodelete"]
-
-    def cleanup(self):
-        self.try_to_delete(Slice, name="testsite_testslice")
-        self.try_to_delete(Site, name="testsite")
-
-    def get_base_templates(self):
-        return self.make_nodetemplate("testsite", "tosca.nodes.Site")
-
-    def create_slice_minimal(self):
-        self.assert_noobj(Slice, "testsite_testslice")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")]))
-        self.assert_obj(Slice, "testsite_testslice", enabled=True, description="", slice_url="", max_instances=10)
-
-    def create_slice_maximal(self):
-        self.assert_noobj(Slice, "testsite_testslice")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                             props={"enabled": False, "description": "foo", "slice_url": "http://foo.com/", "max_instances": 11},
-                                             reqs=[("testsite", "tosca.relationships.MemberOfSite")]))
-        self.assert_obj(Slice, "testsite_testslice", enabled=False, description="foo", slice_url="http://foo.com/", max_instances=11)
-
-    def create_slice_privilege(self):
-        self.assert_noobj(Slice, "testsite_testslice")
-        self.execute(self.get_base_templates() +
-                     self.make_user_template() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite"),
-                                                  ("test@user.com", "tosca.relationships.AdminPrivilege")]))
-        slice = self.assert_obj(Slice, "testsite_testslice")
-        user = User.objects.get(email="test@user.com")
-
-        dps = SlicePrivilege.objects.filter(user=user, slice=slice)
-        assert(len(dps) == 1)
-
-    def create_slice_nocreate(self):
-        self.assert_noobj(Slice, "testsite_testslice")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")],
-                                            props={"no-create": True}))
-        self.assert_noobj(Slice, "testsite_testslice")
-
-    def update_slice(self):
-        self.assert_noobj(Slice, "testsite_testslice")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")]))
-        orig_slice = self.assert_obj(Slice, "testsite_testslice", enabled=True, description="", slice_url="", max_instances=10)
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")],
-                                            props={"description": "foo"}))
-        slice = self.assert_obj(Slice, "testsite_testslice", enabled=True, description="foo", slice_url="", max_instances=10)
-        assert(orig_slice.id == slice.id)
-
-    def update_slice_noupdate(self):
-        self.assert_noobj(Slice, "testsite_testslice")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")]))
-        orig_slice = self.assert_obj(Slice, "testsite_testslice", enabled=True, description="", slice_url="", max_instances=10)
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")],
-                                            props={"description": "foo",
-                                                   "no-update": True}))
-        slice = self.assert_obj(Slice, "testsite_testslice", enabled=True, description="", slice_url="", max_instances=10)
-        assert(orig_slice.id == slice.id)
-
-    def destroy_slice(self):
-        self.assert_noobj(Slice, "testsite_testslice")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")]))
-        self.assert_obj(Slice, "testsite_testslice", enabled=True, description="", slice_url="", max_instances=10)
-        self.destroy(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")]))
-        self.assert_noobj(Slice, "testsite_testslice")
-
-    def destroy_slice_nodelete(self):
-        self.assert_noobj(Slice, "testsite_testslice")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")]))
-        orig_slice = self.assert_obj(Slice, "testsite_testslice", enabled=True, description="", slice_url="", max_instances=10)
-        self.destroy(self.get_base_templates() +
-                     self.make_nodetemplate("testsite_testslice", "tosca.nodes.Slice",
-                                            reqs=[("testsite", "tosca.relationships.MemberOfSite")],
-                                            props={"no-delete": True}))
-        slice = self.assert_obj(Slice, "testsite_testslice", enabled=True, description="", slice_url="", max_instances=10)
-        assert(slice.id == orig_slice.id)
-
-if __name__ == "__main__":
-    SliceTest()
-
-
diff --git a/xos/tosca/tests/usertest.py b/xos/tosca/tests/usertest.py
deleted file mode 100644
index f4bfe86..0000000
--- a/xos/tosca/tests/usertest.py
+++ /dev/null
@@ -1,114 +0,0 @@
-
-# Copyright 2017-present Open Networking Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-from basetest import BaseToscaTest
-
-from core.models import User
-
-class UserTest(BaseToscaTest):
-    tests = ["create_user_minimal",
-             "create_user_maximal",
-             "create_user_key_artifact",
-             "destroy_user",
-                           ]
-
-    def cleanup(self):
-        self.try_to_delete(User, email="test@user.com")
-
-    def get_base_templates(self):
-        return self.make_nodetemplate("testsite", "tosca.nodes.Site")
-
-    def assert_nouser(self, email):
-        assert(not User.objects.filter(email=email))
-
-    def assert_user(self, email, **kwargs):
-        obj = User.objects.get(email=email)
-        assert(obj)
-        for (k,v) in kwargs.items():
-            if (getattr(obj,k,None) != v):
-                print "Object %s property '%s' is '%s' and should be '%s'" % (obj, k, getattr(obj,k,None), v)
-                assert(False)
-        return obj
-
-    def create_user_minimal(self):
-        self.assert_nouser("test@user.com")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test@user.com", "tosca.nodes.User",
-                         props = {"firstname": "test", "lastname": "user", "password": "letmein"},
-                         reqs = [("testsite", "tosca.relationships.MemberOfSite")]))
-        user = self.assert_user("test@user.com",
-                                 firstname="test",
-                                 lastname="user",
-                                 is_active=True,
-                                 is_admin=False)
-
-
-    def create_user_maximal(self):
-        self.assert_nouser("test@user.com")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test@user.com", "tosca.nodes.User",
-                         props = {"firstname": "test",
-                                  "lastname": "user",
-                                  "password": "letmein",
-                                  "phone": "123-456-7890",
-                                  "user_url": "http://foo.bar/",
-                                  "public_key": "thisismykey",
-                                  "is_active": False,
-                                  "is_admin": True},
-                         reqs = [("testsite", "tosca.relationships.MemberOfSite")]))
-        user = self.assert_user("test@user.com",
-                                 firstname="test",
-                                 lastname="user",
-                                 phone="123-456-7890",
-                                 user_url="http://foo.bar/",
-                                 public_key="thisismykey",
-                                 # is_active=False, XXX investigate -- this is failing
-                                 is_admin=True)
-
-    def create_user_key_artifact(self):
-        self.assert_nouser("test@user.com")
-        pubkey = self.make_random_string(400)
-        file("/tmp/pubkey", "w").write(pubkey)
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test@user.com", "tosca.nodes.User",
-                         props = {"firstname": "test", "lastname": "user", "password": "letmein", "public_key": "{ get_artifact: [ SELF, pubkey, LOCAL_FILE] }" },
-                         artifacts = {"pubkey": "/tmp/pubkey"},
-                         reqs = [("testsite", "tosca.relationships.MemberOfSite")]))
-        user = self.assert_user("test@user.com",
-                                 firstname="test",
-                                 lastname="user",
-                                 is_active=True,
-                                 is_admin=False,
-                                 public_key=pubkey)
-
-    def destroy_user(self):
-        self.assert_nouser("test@user.com")
-        self.execute(self.get_base_templates() +
-                     self.make_nodetemplate("test@user.com", "tosca.nodes.User",
-                         props = {"firstname": "test", "lastname": "user", "password": "letmein"},
-                         reqs = [("testsite", "tosca.relationships.MemberOfSite")]))
-        user = self.assert_user("test@user.com")
-        self.destroy(self.get_base_templates() +
-                     self.make_nodetemplate("test@user.com", "tosca.nodes.User",
-                         props = {"firstname": "test", "lastname": "user", "password": "letmein"},
-                         reqs = [("testsite", "tosca.relationships.MemberOfSite")]))
-        self.assert_nouser("test@user.com")
-
-
-if __name__ == "__main__":
-    UserTest()
-
-