diff --git a/.gitignore b/.gitignore
index 9095902..a0d550c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,6 +5,7 @@
 *.moved-aside
 .idea
 setup/*
+setup/id_rsa/*
 xos/configurations/frontend/Dockerfile
 xos/core/xoslib/karma-*
 xos/core/xoslib/docs
@@ -17,4 +18,4 @@
 xos/core/static/*.css
 !xos/core/static/xos.css
 .DS_Store
-xos/configurations/setup
+xos/configurations/setup/
diff --git a/xos/configurations/setup/admin-openrc.sh b/xos/configurations/setup/admin-openrc.sh
index 276c39c..24cd509 100644
--- a/xos/configurations/setup/admin-openrc.sh
+++ b/xos/configurations/setup/admin-openrc.sh
@@ -1,4 +1,8 @@
+# Replace with the OpenStack admin credentials for your cluster
+export OS_PROJECT_DOMAIN_ID=default
+export OS_USER_DOMAIN_ID=default
 export OS_TENANT_NAME=admin
 export OS_USERNAME=admin
-export OS_PASSWORD=df130e830b013289192e
-export OS_AUTH_URL=http://10.0.10.125:5000/v2.0
+export OS_PASSWORD=mcord
+export OS_AUTH_URL=http://10.102.81.3:35357/v2.0
+
diff --git a/xos/configurations/setup/id_rsa b/xos/configurations/setup/id_rsa
index 427bf89..c688622 100644
--- a/xos/configurations/setup/id_rsa
+++ b/xos/configurations/setup/id_rsa
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/xos/configurations/setup/id_rsa.pub b/xos/configurations/setup/id_rsa.pub
index 81dd872..167f69e 100644
--- a/xos/configurations/setup/id_rsa.pub
+++ b/xos/configurations/setup/id_rsa.pub
@@ -1 +1 @@
-ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvt7NlX3BTg70X98w6wb1mbSQhuMsY2wv8wle4aWrDRJFFuTFiKm+0/6kmYLOQeadQUITUExUdycIlF+FzBpsXTxz63sfmaPoY+j9ApHux4uvYgoyN8bfzjq7eTY6jzA1/LwcnmD5tkWEGT5nSxxiSpAUMvQhbUm1aSX5i7ZVxmyJIkKqP7teOMzVCiIMLLHenrP+MeLkrVcgXG9Bp4F12bcgJq7bHp7N3nCdiM9oIA27CKwkqCbBK9f+Wvw1mSOkRMwT6CEw8Orsq9cVkv0wKa/wgV7Z8pXMgOoeRuBxn9bSZp50D/bL2nnkH5JCY3c9dbUSE5ccfRI0/fVlL43l3 ubuntu@ip-10-0-10-125
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCIo3V9JDwOIUmZNYBarUWEV+A6/TlUaSQFSqcVgbYxQ/cUSwHIBwHKFj40zZr/HRt9nLS9+9/5gLmHPj+ReSk5fyrwxA8mxrYAOdRio0jpw24LMMjRdIltF0DVC5sYG5V7Sn+JngycIQZAwn7ZVaE0EP5/ad1Ba4MzUkNiiLPdw7rUT2JWqWmN4wQ8TdWDP6de2r/XeH6/+PwdS1hDM7lhaDaSCHjsYrzMD8X3XSLOQWV199b3a4E1AiAgpzerwCpjsoxVpPeQ/4K0WBtvsI2ZF028vOQLaPrLH4o5lLbSczgDdbqY2bY4WCtGBdfWUXPzhKJXLI/g3VpOjX7pfoH root@controller
diff --git a/xos/configurations/setup/node_key b/xos/configurations/setup/node_key
index 427bf89..c688622 100644
--- a/xos/configurations/setup/node_key
+++ b/xos/configurations/setup/node_key
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+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
 -----END RSA PRIVATE KEY-----
diff --git a/xos/configurations/setup/node_key.pub b/xos/configurations/setup/node_key.pub
index 81dd872..167f69e 100644
--- a/xos/configurations/setup/node_key.pub
+++ b/xos/configurations/setup/node_key.pub
@@ -1 +1 @@
-ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvt7NlX3BTg70X98w6wb1mbSQhuMsY2wv8wle4aWrDRJFFuTFiKm+0/6kmYLOQeadQUITUExUdycIlF+FzBpsXTxz63sfmaPoY+j9ApHux4uvYgoyN8bfzjq7eTY6jzA1/LwcnmD5tkWEGT5nSxxiSpAUMvQhbUm1aSX5i7ZVxmyJIkKqP7teOMzVCiIMLLHenrP+MeLkrVcgXG9Bp4F12bcgJq7bHp7N3nCdiM9oIA27CKwkqCbBK9f+Wvw1mSOkRMwT6CEw8Orsq9cVkv0wKa/wgV7Z8pXMgOoeRuBxn9bSZp50D/bL2nnkH5JCY3c9dbUSE5ccfRI0/fVlL43l3 ubuntu@ip-10-0-10-125
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCIo3V9JDwOIUmZNYBarUWEV+A6/TlUaSQFSqcVgbYxQ/cUSwHIBwHKFj40zZr/HRt9nLS9+9/5gLmHPj+ReSk5fyrwxA8mxrYAOdRio0jpw24LMMjRdIltF0DVC5sYG5V7Sn+JngycIQZAwn7ZVaE0EP5/ad1Ba4MzUkNiiLPdw7rUT2JWqWmN4wQ8TdWDP6de2r/XeH6/+PwdS1hDM7lhaDaSCHjsYrzMD8X3XSLOQWV199b3a4E1AiAgpzerwCpjsoxVpPeQ/4K0WBtvsI2ZF028vOQLaPrLH4o5lLbSczgDdbqY2bY4WCtGBdfWUXPzhKJXLI/g3VpOjX7pfoH root@controller
diff --git a/xos/configurations/setup/nodes.yaml b/xos/configurations/setup/nodes.yaml
index 3901208..0b56159 100644
--- a/xos/configurations/setup/nodes.yaml
+++ b/xos/configurations/setup/nodes.yaml
@@ -11,7 +11,7 @@
         type: tosca.nodes.Deployment
     mysite:
         type: tosca.nodes.Site
-    ip-10-0-10-125:
+    computeBBU2:
       type: tosca.nodes.Node
       requirements:
         - site:
diff --git a/xos/configurations/setup/padmin_public_key b/xos/configurations/setup/padmin_public_key
index 81dd872..167f69e 100644
--- a/xos/configurations/setup/padmin_public_key
+++ b/xos/configurations/setup/padmin_public_key
@@ -1 +1 @@
-ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvt7NlX3BTg70X98w6wb1mbSQhuMsY2wv8wle4aWrDRJFFuTFiKm+0/6kmYLOQeadQUITUExUdycIlF+FzBpsXTxz63sfmaPoY+j9ApHux4uvYgoyN8bfzjq7eTY6jzA1/LwcnmD5tkWEGT5nSxxiSpAUMvQhbUm1aSX5i7ZVxmyJIkKqP7teOMzVCiIMLLHenrP+MeLkrVcgXG9Bp4F12bcgJq7bHp7N3nCdiM9oIA27CKwkqCbBK9f+Wvw1mSOkRMwT6CEw8Orsq9cVkv0wKa/wgV7Z8pXMgOoeRuBxn9bSZp50D/bL2nnkH5JCY3c9dbUSE5ccfRI0/fVlL43l3 ubuntu@ip-10-0-10-125
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCIo3V9JDwOIUmZNYBarUWEV+A6/TlUaSQFSqcVgbYxQ/cUSwHIBwHKFj40zZr/HRt9nLS9+9/5gLmHPj+ReSk5fyrwxA8mxrYAOdRio0jpw24LMMjRdIltF0DVC5sYG5V7Sn+JngycIQZAwn7ZVaE0EP5/ad1Ba4MzUkNiiLPdw7rUT2JWqWmN4wQ8TdWDP6de2r/XeH6/+PwdS1hDM7lhaDaSCHjsYrzMD8X3XSLOQWV199b3a4E1AiAgpzerwCpjsoxVpPeQ/4K0WBtvsI2ZF028vOQLaPrLH4o5lLbSczgDdbqY2bY4WCtGBdfWUXPzhKJXLI/g3VpOjX7pfoH root@controller
diff --git a/xos/services/mcordservice/__init__.py b/xos/services/mcordservice/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/xos/services/mcordservice/__init__.py
+++ /dev/null
diff --git a/xos/services/mcordservice/admin.py b/xos/services/mcordservice/admin.py
deleted file mode 100644
index 6205d9b..0000000
--- a/xos/services/mcordservice/admin.py
+++ /dev/null
@@ -1,141 +0,0 @@
-
-from core.admin import ReadOnlyAwareAdmin, SliceInline
-from core.middleware import get_request
-from core.models import User
-from django import forms
-from django.contrib import admin
-from services.mcordservice.models import MCORDService, MCORDServiceComponent, MCORD_KIND
-
-# The class to provide an admin interface on the web for the service.
-# We do only configuration here and don't change any logic because the logic
-# is taken care of for us by ReadOnlyAwareAdmin
-class MCORDServiceAdmin(ReadOnlyAwareAdmin):
-    # We must set the model so that the admin knows what fields to use
-    model = MCORDService
-    verbose_name = "MCORD Service"
-    verbose_name_plural = "MCORD Services"
-
-    # Setting list_display creates columns on the admin page, each value here
-    # is a column, the column is populated for every instance of the model.
-    list_display = ("backend_status_icon", "name", "enabled")
-
-    # Used to indicate which values in the columns of the admin form are links.
-    list_display_links = ('backend_status_icon', 'name', )
-
-    # Denotes the sections of the form, the fields in the section, and the
-    # CSS classes used to style them. We represent this as a set of tuples, each
-    # tuple as a name (or None) and a set of fields and classes.
-    # Here the first section does not have a name so we use none. That first
-    # section has several fields indicated in the 'fields' attribute, and styled
-    # by the classes indicated in the 'classes' attribute. The classes given
-    # here are important for rendering the tabs on the form. To give the tabs
-    # we must assign the classes suit-tab and suit-tab-<name> where
-    # where <name> will be used later.
-    fieldsets = [(None, {'fields': ['backend_status_text', 'name', 'enabled',
-                                    'versionNumber', 'description', "view_url"],
-                         'classes':['suit-tab suit-tab-general']})]
-
-    # Denotes the fields that are readonly and cannot be changed.
-    readonly_fields = ('backend_status_text', )
-
-    # Inlines are used to denote other models that can be edited on the same
-    # form as this one. In this case the service form also allows changes
-    # to slices.
-    inlines = [SliceInline]
-
-    extracontext_registered_admins = True
-
-    # Denotes the fields that can be changed by an admin but not be all users
-    user_readonly_fields = ["name", "enabled", "versionNumber", "description"]
-
-    # Associates fieldsets from this form and from the inlines.
-    # The format here are tuples, of (<name>, tab title). <name> comes from the
-    # <name> in the fieldsets.
-    suit_form_tabs = (('general', 'MCORD Service Details'),
-                      ('administration', 'Components'),
-                      ('slices', 'Slices'),)
-
-    # Used to include a template for a tab. Here we include the
-    # helloworldserviceadmin template in the top position for the administration
-    # tab.
-    suit_form_includes = (('mcordserviceadmin.html',
-                           'top',
-                           'administration'),)
-
-    # Used to get the objects for this model that are associated with the
-    # requesting user.
-    def queryset(self, request):
-        return MCORDService.get_service_objects_by_user(request.user)
-
-# Class to represent the form to add and edit tenants.
-# We need to define this instead of just using an admin like we did for the
-# service because tenants vary more than services and there isn't a common form.
-# This allows us to change the python behavior for the admin form to save extra
-# fields and control defaults.
-class MCORDServiceComponentForm(forms.ModelForm):
-    # Defines a field for the creator of this service. It is a dropdown which
-    # is populated with all of the users.
-    creator = forms.ModelChoiceField(queryset=User.objects.all())
-    # Defines a text field for the display message, it is not required.
-    display_message = forms.CharField(required=False)
-
-    def __init__(self, *args, **kwargs):
-        super(MCORDServiceComponentForm, self).__init__(*args, **kwargs)
-        # Set the kind field to readonly
-        self.fields['kind'].widget.attrs['readonly'] = True
-        # Define the logic for obtaining the objects for the provider_service
-        # dropdown of the tenant form.
-        self.fields[
-            'provider_service'].queryset = MCORDService.get_service_objects().all()
-        # Set the initial kind to HELLO_WORLD_KIND for this tenant.
-        self.fields['kind'].initial = MCORD_KIND
-        # If there is an instance of this model then we can set the initial
-        # form values to the existing values.
-        if self.instance:
-            self.fields['creator'].initial = self.instance.creator
-            self.fields[
-                'display_message'].initial = self.instance.display_message
-
-        # If there is not an instance then we need to set initial values.
-        if (not self.instance) or (not self.instance.pk):
-            self.fields['creator'].initial = get_request().user
-            if MCORDService.get_service_objects().exists():
-                self.fields["provider_service"].initial = MCORDService.get_service_objects().all()[0]
-
-    # This function describes what happens when the save button is pressed on
-    # the tenant form. In this case we set the values for the instance that were
-    # entered.
-    def save(self, commit=True):
-        self.instance.creator = self.cleaned_data.get("creator")
-        self.instance.display_message = self.cleaned_data.get(
-            "display_message")
-        return super(MCORDServiceComponentForm, self).save(commit=commit)
-
-    class Meta:
-        model = MCORDServiceComponent
-
-# Define the admin form for the tenant. This uses a similar structure as the
-# service but uses HelloWorldTenantCompleteForm to change the python behavior.
-
-
-class MCORDServiceComponentAdmin(ReadOnlyAwareAdmin):
-    verbose_name = "MCORD Component"
-    verbose_name_plural = "MCORD Components"
-    list_display = ('id', 'backend_status_icon', 'instance', 'display_message')
-    list_display_links = ('backend_status_icon', 'instance', 'display_message',
-                          'id')
-    fieldsets = [(None, {'fields': ['backend_status_text', 'kind',
-                                    'provider_service', 'instance', 'creator',
-                                    'display_message'],
-                         'classes': ['suit-tab suit-tab-general']})]
-    readonly_fields = ('backend_status_text', 'instance',)
-    form = MCORDServiceComponentForm
-
-    suit_form_tabs = (('general', 'Details'),)
-
-    def queryset(self, request):
-        return MCORDServiceComponent.get_tenant_objects_by_user(request.user)
-
-# Associate the admin forms with the models.
-admin.site.register(MCORDService, MCORDServiceAdmin)
-admin.site.register(MCORDServiceComponent, MCORDServiceComponentAdmin)
diff --git a/xos/services/mcordservice/models.py b/xos/services/mcordservice/models.py
deleted file mode 100644
index 369dd89..0000000
--- a/xos/services/mcordservice/models.py
+++ /dev/null
@@ -1,156 +0,0 @@
-from django.db import models
-from core.models import Service, PlCoreBase, Slice, Instance, Tenant, TenantWithContainer, Node, Image, User, Flavor, Subscriber
-from core.models.plcorebase import StrippedCharField
-import os
-from django.db import models, transaction
-from django.forms.models import model_to_dict
-from django.db.models import Q
-from operator import itemgetter, attrgetter, methodcaller
-import traceback
-from xos.exceptions import *
-from core.models import SlicePrivilege, SitePrivilege
-from sets import Set
-
-MCORD_KIND = "mcordservice"
-
-# The class to represent the service. Most of the service logic is given for us
-# in the Service class but, we have some configuration that is specific for
-# this example.
-class MCORDService(Service):
-    KIND = MCORD_KIND
-
-    class Meta:
-        # When the proxy field is set to True the model is represented as
-        # it's superclass in the database, but we can still change the python
-        # behavior. In this case HelloWorldServiceComplete is a Service in the
-        # database.
-        proxy = True
-        # The name used to find this service, all directories are named this
-        app_label = "mcordservice"
-        verbose_name = "MCORD Service"
-
-# This is the class to represent the tenant. Most of the logic is given to use
-# in TenantWithContainer, however there is some configuration and logic that
-# we need to define for this example.
-class MCORDServiceComponent(TenantWithContainer):
-
-    class Meta:
-        # Same as a above, HelloWorldTenantComplete is represented as a
-        # TenantWithContainer, but we change the python behavior.
-        proxy = True
-        verbose_name = "MCORD Service Component"
-
-    # The kind of the service is used on forms to differentiate this service
-    # from the other services.
-    KIND = MCORD_KIND
-
-    # Ansible requires that the sync_attributes field contain nat_ip and nat_mac
-    # these will be used to determine where to SSH to for ansible.
-    # Getters must be defined for every attribute specified here.
-    sync_attributes = ("private_ip", "private_mac",
-                       "mcord_ip", "mcord_mac",
-                       "nat_ip", "nat_mac",)
-
-    # default_attributes is used cleanly indicate what the default values for
-    # the fields are.
-    default_attributes = {'display_message': 'Hello MCORD!'}
-
-    def __init__(self, *args, **kwargs):
-        mcord_services = MCORDService.get_service_objects().all()
-        # When the tenant is created the default service in the form is set
-        # to be the first created HelloWorldServiceComplete
-        if mcord_services:
-            self._meta.get_field(
-                "provider_service").default = mcord_services[0].id
-        super(MCORDServiceComponent, self).__init__(*args, **kwargs)
-
-    def can_update(self, user):
-        #Allow creation of this model instances for non-admin users also
-        return True
-
-    def save(self, *args, **kwargs):
-        if not self.creator:
-            if not getattr(self, "caller", None):
-                # caller must be set when creating a monitoring channel since it creates a slice
-                raise XOSProgrammingError("ServiceComponents's self.caller was not set")
-            self.creator = self.caller
-            if not self.creator:
-                raise XOSProgrammingError("ServiceComponents's self.creator was not set")
-
-        super(MCORDServiceComponent, self).save(*args, **kwargs)
-        # This call needs to happen so that an instance is created for this
-        # tenant is created in the slice. One instance is created per tenant.
-        model_policy_mcord_servicecomponent(self.pk)
-
-    def delete(self, *args, **kwargs):
-        # Delete the instance that was created for this tenant
-        self.cleanup_container()
-        super(MCORDServiceComponent, self).delete(*args, **kwargs)
-
-    # Getter for the message that will appear on the webpage
-    # By default it is "Hello World!"
-    @property
-    def display_message(self):
-        return self.get_attribute(
-            "display_message",
-            self.default_attributes['display_message'])
-
-    # Setter for the message that will appear on the webpage
-    @display_message.setter
-    def display_message(self, value):
-        self.set_attribute("display_message", value)
-
-    @property
-    def addresses(self):
-        if (not self.id) or (not self.instance):
-            return {}
-
-        addresses = {}
-        for ns in self.instance.ports.all():
-            if "private" in ns.network.name.lower():
-                addresses["private"] = (ns.ip, ns.mac)
-            elif "nat" in ns.network.name.lower():
-                addresses["nat"] = (ns.ip, ns.mac)
-            elif "mcord_service_internal_net" in ns.network.labels.lower():
-                addresses["mcordservice"] = (ns.ip, ns.mac)
-        return addresses
-
-    # This getter is necessary because nat_ip is a sync_attribute
-    @property
-    def nat_ip(self):
-        return self.addresses.get("nat", (None, None))[0]
-
-    # This getter is necessary because nat_mac is a sync_attribute
-    @property
-    def nat_mac(self):
-        return self.addresses.get("nat", (None, None))[1]
-
-    @property
-    def private_ip(self):
-        return self.addresses.get("nat", (None, None))[0]
-
-    @property
-    def private_mac(self):
-        return self.addresses.get("nat", (None, None))[1]
-
-
-    @property
-    def mcord_ip(self):
-        return self.addresses.get("nat", (None, None))[0]
-
-    @property
-    def mcord_mac(self):
-        return self.addresses.get("nat", (None, None))[1]
-
-
-
-def model_policy_mcord_servicecomponent(pk):
-    # This section of code is atomic to prevent race conditions
-    with transaction.atomic():
-        # We find all of the tenants that are waiting to update
-        component = MCORDServiceComponent.objects.select_for_update().filter(pk=pk)
-        if not component:
-            return
-        # Since this code is atomic it is safe to always use the first tenant
-        component = component[0]
-        component.manage_container()
diff --git a/xos/services/mcordservice/templates/mcordserviceadmin.html b/xos/services/mcordservice/templates/mcordserviceadmin.html
deleted file mode 100644
index 001af9a..0000000
--- a/xos/services/mcordservice/templates/mcordserviceadmin.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<!-- Template used to for the button leading to the HelloWorldTenantComplete form. -->
-<div class = "left-nav">
-  <ul>
-    <li>
-      <a href="/admin/mcordservice/mcordservicecomponent/">
-        MCORD Service Components
-      </a>
-    </li>
-  </ul>
-</div>
diff --git a/xos/synchronizers/mcordservice/__init__.py b/xos/synchronizers/mcordservice/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/xos/synchronizers/mcordservice/__init__.py
+++ /dev/null
diff --git a/xos/synchronizers/mcordservice/mcordservice-synchronizer.py b/xos/synchronizers/mcordservice/mcordservice-synchronizer.py
deleted file mode 100644
index 95f4081..0000000
--- a/xos/synchronizers/mcordservice/mcordservice-synchronizer.py
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/env python
-
-# This imports and runs ../../xos-observer.py
-# Runs the standard XOS observer
-
-import importlib
-import os
-import sys
-observer_path = os.path.join(os.path.dirname(
-    os.path.realpath(__file__)), "../../synchronizers/base")
-sys.path.append(observer_path)
-mod = importlib.import_module("xos-synchronizer")
-mod.main()
diff --git a/xos/synchronizers/mcordservice/mcordservice_config b/xos/synchronizers/mcordservice/mcordservice_config
deleted file mode 100644
index 56fb6b8..0000000
--- a/xos/synchronizers/mcordservice/mcordservice_config
+++ /dev/null
@@ -1,36 +0,0 @@
-# Required by XOS
-[db]
-name=xos
-user=postgres
-password=password
-host=localhost
-port=5432
-
-# Required by XOS
-[api]
-nova_enabled=True
-
-# Sets options for the observer
-[observer]
-# Optional name
-name=mcordservice
-# This is the location to the dependency graph you generate
-dependency_graph=/opt/xos/synchronizers/mcordservice/model-deps
-# The location of your SyncSteps
-steps_dir=/opt/xos/synchronizers/mcordservice/steps
-# A temporary directory that will be used by ansible
-sys_dir=/opt/xos/synchronizers/mcordservice/sys
-# Location of the file to save logging messages to the backend log is often used
-logfile=/var/log/xos_backend.log
-# If this option is true, then nothing will change, we simply pretend to run
-pretend=False
-# If this is False then XOS will use an exponential backoff when the observer
-# fails, since we will be waiting for an instance, we don't want this.
-backoff_disabled=True
-# We want the output from ansible to be logged
-save_ansible_output=True
-# This determines how we SSH to a client, if this is set to True then we try
-# to ssh using the instance name as a proxy, if this is disabled we ssh using
-# the NAT IP of the instance. On CloudLab the first option will fail so we must
-# set this to False
-proxy_ssh=False
diff --git a/xos/synchronizers/mcordservice/mcordservice_private_key b/xos/synchronizers/mcordservice/mcordservice_private_key
deleted file mode 100644
index 427bf89..0000000
--- a/xos/synchronizers/mcordservice/mcordservice_private_key
+++ /dev/null
@@ -1,27 +0,0 @@
------BEGIN RSA PRIVATE KEY-----
-MIIEowIBAAKCAQEAr7ezZV9wU4O9F/fMOsG9Zm0kIbjLGNsL/MJXuGlqw0SRRbkx
-YipvtP+pJmCzkHmnUFCE1BMVHcnCJRfhcwabF08c+t7H5mj6GPo/QKR7seLr2IKM
-jfG3846u3k2Oo8wNfy8HJ5g+bZFhBk+Z0scYkqQFDL0IW1JtWkl+Yu2VcZsiSJCq
-j+7XjjM1QoiDCyx3p6z/jHi5K1XIFxvQaeBddm3ICau2x6ezd5wnYjPaCANuwisJ
-KgmwSvX/lr8NZkjpETME+ghMPDq7KvXFZL9MCmv8IFe2fKVzIDqHkbgcZ/W0maed
-A/2y9p55B+SQmN3PXW1EhOXHH0SNP31ZS+N5dwIDAQABAoIBAGrudaN5ItgP0WDm
-kUgoYmQUgupqlF2531+fvNYigK/36BfwDRdaD8Sr2HncWynOfn0nos2UF0ObZiRA
-lhfzqynSISahsDCNLbVJhHiIICYum6uUNoii0njLGat6sxUGtifxrH7x7Pusfsji
-ZA+azV9fpRsNZip8zMMm+lyljE4nQbVZv09aExq0Mh2n+mH6OWS43mZ1N7TxWtgd
-MmtoLBAPoMiqXlCxZOcznptVR9hY7CSG0uOQUSui44DOXOyqEI7z57eoYM1hWmng
-Ery07Qr9BbEVl4epLaEyLIGXcUsUbcQz3kbXCg0NbXHiFtr0kdIVwJXHg5M9MAsf
-fDaxJZECgYEA29oLRkI+0L9rSErteaf4spo4FJAARWbsVM3uj1gKEClUUHklI97A
-UVTcOFC7Drr/rwqfHy8fQq9ASIMDnj+FulYQSMna3SLdkgsbNSDuesbG4wp6+chQ
-uSzZP1YtaYrjMxz6s8s/zmFkqAssyOuscsOhgF16945hc63GLro4GwUCgYEAzJv4
-eqWrY6Il7p/Oir4AJxbdfO50Oj1dECsFNZ1KhtA280FslW6Za+oUfD1+Xv13XRZP
-O62IvXXJT67NOq0rKVUixPJJFXQqSRU1QljLgREM6dqr4pS4NirkaPvGwuuej8I4
-dKLqVPcNxDSAXfMwR0KQu7+IVEdvzrw5hrsgg0sCgYB21YUClQwfCViT2uxBtelX
-oMRvWObMnLVhoW4xTQUjdzN7y/+nQ9/wFk5yojB55doOY09fK7lZ8iBtEWQDRZKj
-BaIHthP3M8FQD3DFZueAtbELR77xBLWdYgCLm6kwQ0JLfn6EcHgstbgSnPe4Iqsz
-3UqOd/jflrZWMLfOyhlJgQKBgCGCRa5oZWo6yvWKjHviZAoCz6E/OB+1nwEf2omO
-Sf9MKEOsakkKxOuMeXBjbcfGwP6owa8nW2aT3LVFDm1WoOPzAm+4sklmLeqsI33L
-JwDrNu8xlcbUzlpoqeGbolCX3+7xQuevKqthjoqcgo1gX368IxHsazpKPMBhyRYM
-nWWDAoGBANOG/59508uQqZvWtByA092ARXjEUYLgNTwDo1N4kM5zgV8NETtv7qs/
-P/ze2e88sI230jzbU3iq2OGjk6S1c6LHVG9QohZPwtnwTCeKRhSG+CYHMcXSLK7D
-xf4C0kAbPsaG5F0w3vbGTTF4uuGXyijOQSXMhiG4756VaMEGvb9k
------END RSA PRIVATE KEY-----
diff --git a/xos/synchronizers/mcordservice/mcordservice_vtnconfig b/xos/synchronizers/mcordservice/mcordservice_vtnconfig
deleted file mode 100644
index 47434e4..0000000
--- a/xos/synchronizers/mcordservice/mcordservice_vtnconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-# Required by XOS
-[db]
-name=xos
-user=postgres
-password=password
-host=localhost
-port=5432
-
-# Required by XOS
-[api]
-nova_enabled=True
-
-# Sets options for the observer
-[observer]
-# Optional name
-name=mcordservice
-# This is the location to the dependency graph you generate
-dependency_graph=/opt/xos/synchronizers/mcordservice/model-deps
-# The location of your SyncSteps
-steps_dir=/opt/xos/synchronizers/mcordservice/steps
-# A temporary directory that will be used by ansible
-sys_dir=/opt/xos/synchronizers/mcordservice/sys
-# Location of the file to save logging messages to the backend log is often used
-logfile=/var/log/xos_backend.log
-# If this option is true, then nothing will change, we simply pretend to run
-pretend=False
-# If this is False then XOS will use an exponential backoff when the observer
-# fails, since we will be waiting for an instance, we don't want this.
-backoff_disabled=True
-# We want the output from ansible to be logged
-save_ansible_output=True
-# This determines how we SSH to a client, if this is set to True then we try
-# to ssh using the instance name as a proxy, if this is disabled we ssh using
-# the NAT IP of the instance. On CloudLab the first option will fail so we must
-# set this to False
-proxy_ssh=True
-proxy_ssh_key=/root/setup/id_rsa/id_rsa
-proxy_ssh_user=root
-[networking]
-use_vtn=True
-
diff --git a/xos/synchronizers/mcordservice/model-deps b/xos/synchronizers/mcordservice/model-deps
deleted file mode 100644
index 0967ef4..0000000
--- a/xos/synchronizers/mcordservice/model-deps
+++ /dev/null
@@ -1 +0,0 @@
-{}
diff --git a/xos/synchronizers/mcordservice/run.sh b/xos/synchronizers/mcordservice/run.sh
deleted file mode 100644
index 9e8516e..0000000
--- a/xos/synchronizers/mcordservice/run.sh
+++ /dev/null
@@ -1,3 +0,0 @@
-# Runs the XOS observer using helloworldservice_config
-export XOS_DIR=/opt/xos
-python mcordservice-synchronizer.py  -C $XOS_DIR/synchronizers/mcordservice/mcordservice_config
diff --git a/xos/synchronizers/mcordservice/steps/sync_mcordservicecomponent.py b/xos/synchronizers/mcordservice/steps/sync_mcordservicecomponent.py
deleted file mode 100644
index 6e0590e..0000000
--- a/xos/synchronizers/mcordservice/steps/sync_mcordservicecomponent.py
+++ /dev/null
@@ -1,37 +0,0 @@
-import os
-import sys
-from django.db.models import Q, F
-from services.mcordservice.models import MCORDService, MCORDServiceComponent
-from synchronizers.base.SyncInstanceUsingAnsible import SyncInstanceUsingAnsible
-
-parentdir = os.path.join(os.path.dirname(__file__), "..")
-sys.path.insert(0, parentdir)
-
-class SyncMCORDServiceComponent(SyncInstanceUsingAnsible):
-
-    provides = [MCORDServiceComponent]
-
-    observes = MCORDServiceComponent
-
-    requested_interval = 0
-
-    template_name = "sync_mcordservicecomponent.yaml"
-
-    service_key_name = "/opt/xos/synchronizers/mcordservice/mcordservice_private_key"
-
-    def __init__(self, *args, **kwargs):
-        super(SyncMCORDServiceComponent, self).__init__(*args, **kwargs)
-
-    def fetch_pending(self, deleted):
-
-        if (not deleted):
-            objs = MCORDServiceComponent.get_tenant_objects().filter(
-                Q(enacted__lt=F('updated')) | Q(enacted=None), Q(lazy_blocked=False))
-        else:
-
-            objs = MCORDServiceComponent.get_deleted_tenant_objects()
-
-        return objs
-
-    def get_extra_attributes(self, o):
-        return {"display_message": o.display_message}
diff --git a/xos/synchronizers/mcordservice/steps/sync_mcordservicecomponent.yaml b/xos/synchronizers/mcordservice/steps/sync_mcordservicecomponent.yaml
deleted file mode 100644
index 719c75f..0000000
--- a/xos/synchronizers/mcordservice/steps/sync_mcordservicecomponent.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
----
-- hosts: {{ instance_name }}
-  gather_facts: False
-  connection: ssh
-  user: ubuntu
-  sudo: yes
-  tasks:
-  - name: install apache
-    apt: name=apache2 state=present update_cache=yes
-
-  - name: write message
-    shell: echo "{{ display_message }}" > /var/www/html/index.html
-
-  - name: stop apache
-    service: name=apache2 state=stopped
-
-  - name: start apache
-    service: name=apache2 state=started
diff --git a/xos/synchronizers/mcordservice/stop.sh b/xos/synchronizers/mcordservice/stop.sh
deleted file mode 100644
index 9127d5f..0000000
--- a/xos/synchronizers/mcordservice/stop.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-# Kill the observer
-pkill -9 -f mcordservice-synchronizer.py
diff --git a/xos/tosca/MCORDService.yaml b/xos/tosca/MCORDService.yaml
deleted file mode 100644
index 185a314..0000000
--- a/xos/tosca/MCORDService.yaml
+++ /dev/null
@@ -1,86 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup MCORD-related services.
-
-imports:
-   - custom_types/xos.yaml
-
-node_types:
-    tosca.nodes.MCORDComponent:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A Service Component of MCORD Service.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of component
-
-topology_template:
-  node_templates:
-    service_mcord:
-      type: tosca.nodes.Service
-      requirements:
-      properties:
-          kind: mcordservice
-#          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
-#      artifacts:
-#          pubkey: /opt/xos/observers/mcord/mcord_public_key
-
-
-    Private:
-      type: tosca.nodes.NetworkTemplate
-
-    mcord_network:
-      type: tosca.nodes.network.Network.XOS
-      properties:
-          ip_version: 4
-          labels: mcord_service_internal_net
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_mcord_slice1
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_mcord_slice1
-              relationship: tosca.relationships.ConnectsToSlice
-
-    mysite:
-      type: tosca.nodes.Site
-
-    mcord-server-image-s1:
-      type: tosca.nodes.Image
-
-    trusty-server-multi-nic:
-      type: tosca.nodes.Image
-
-    mysite_mcord_slice1:
-      description: MCORD Service Slice 1
-      type: tosca.nodes.Slice
-      requirements:
-          - mcord_service:
-              node: service_mcord
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          - default_image:
-                node: trusty-server-multi-nic
-#                node: mcord-server-image-s1
-                relationship: tosca.relationships.DefaultImage
-      properties:
-          default_flavor: m1.medium
-          default_node: ip-10-0-10-125 
-    
-    my_service_mcord_component1:
-      description: MCORD Service default Component
-      type: tosca.nodes.MCORDComponent
-      requirements:
-          - provider_service:
-              node: service_mcord
-              relationship: tosca.relationships.MemberOfService
-          - mcord_slice:
-              node: mysite_mcord_slice1
-              relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/MCORDServiceN.yaml b/xos/tosca/MCORDServiceN.yaml
deleted file mode 100644
index 0229e43..0000000
--- a/xos/tosca/MCORDServiceN.yaml
+++ /dev/null
@@ -1,200 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup MCORD-related services.
-
-imports:
-   - custom_types/xos.yaml
-
-node_types:
-    tosca.nodes.MCORDComponent:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A Service Component of MCORD Service.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of component
-
-topology_template:
-  node_templates:
-
-    # Setup
-    trusty-server-multi-nic:
-      type: tosca.nodes.Image
-      properties:
-         disk_format: QCOW2
-         container_format: BARE
-
-    MyDeployment:
-      type: tosca.nodes.Deployment
-      properties:
-          flavors: m1.large, m1.medium, m1.small
-      requirements:
-          - image:
-              node: trusty-server-multi-nic
-              relationship: tosca.relationships.SupportsImage
-
-    compute9:
-      type: tosca.nodes.Node
-      requirements:
-        - site:
-            node: mysite
-            relationship: tosca.relationships.MemberOfSite
-        - deployment:
-            node: MyDeployment
-            relationship: tosca.relationships.MemberOfDeployment
-
-    # SUBSCRIBER
-
-    # Let's add a user who can be administrator of the household
-    johndoe@stanford.us:
-      type: tosca.nodes.User
-      properties:
-          password: letmein
-          firstname: john
-          lastname: doe
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-    
-    # A subscriber
-    Stanford:
-       type: tosca.nodes.CORDSubscriber
-       properties:
-           service_specific_id: 123
-           firewall_enable: false
-           cdn_enable: false
-           url_filter_enable: false
-           url_filter_level: R
-       requirements:
-          - house_admin:
-              node: johndoe@stanford.us
-              relationship: tosca.relationships.AdminPrivilege
-
-    Barbera Lapinski:
-       type: tosca.nodes.CORDUser
-       properties:
-           mac: 01:02:03:04:05:06
-           level: PG_13
-       requirements:
-           - household:
-               node: Stanford
-               relationship: tosca.relationships.SubscriberDevice
-
-    Norbert Shumway:
-       type: tosca.nodes.CORDUser
-       properties:
-           mac: 90:E2:BA:82:F9:75
-           level: PG_13
-       requirements:
-           - household:
-               node: Stanford
-               relationship: tosca.relationships.SubscriberDevice
-
-    Fay Muldoon:
-       type: tosca.nodes.CORDUser
-       properties:
-           mac: 68:5B:35:9D:91:D5
-           level: PG_13
-       requirements:
-           - household:
-               node: Stanford
-               relationship: tosca.relationships.SubscriberDevice
-
-    Janene Earnest:
-       type: tosca.nodes.CORDUser
-       properties:
-           mac: 34:36:3B:C9:B6:A6
-           level: PG_13
-       requirements:
-           - household:
-               node: Stanford
-               relationship: tosca.relationships.SubscriberDevice
-
-
-    Topology:
-      type: tosca.nodes.DashboardView
-      properties:
-          url: template:xosMcordTopology
-
-    padmin@vicci.org:
-      type: tosca.nodes.User
-      properties:
-          firstname: XOS
-          lastname: admin
-          is_admin: true
-      requirements:
-          - mcord_dashboard:
-              node: Topology
-              relationship: tosca.relationships.UsesDashboard
-
-    # SERIVCES
-    service_mcord:
-      type: tosca.nodes.Service
-      requirements:
-      properties:
-          view_url: /admin/mcordservice/
-          kind: mcordservice
-
-    # Network Templates
-    Private:
-      type: tosca.nodes.NetworkTemplate
-
-    # Network
-    mcord_network:
-      type: tosca.nodes.network.Network.XOS
-      properties:
-          ip_version: 4
-          labels: mcord_service_internal_net
-          cidr: 172.16.16.0/24
-          start_ip: 172.16.16.2
-          end_ip: 172.16.16.5
-          gateway_ip: 172.16.16.1
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_mcord_slice1
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_mcord_slice1
-              relationship: tosca.relationships.ConnectsToSlice
-
-    mysite:
-      type: tosca.nodes.Site
-
-
-    ubuntu-14.04-server-cloudimg-amd64-disk1:
-      type: tosca.nodes.Image
-
-    mysite_mcord_slice1:
-      description: MCORD Service Slice 1
-      type: tosca.nodes.Slice
-      requirements:
-          - mcord_service:
-              node: service_mcord
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          - default_image:
-                node: ubuntu-14.04-server-cloudimg-amd64-disk1 
-#                node: mcord-server-image-s1
-                relationship: tosca.relationships.DefaultImage
-      properties:
-          default_flavor: m1.medium
-          default_node: compute9 
-
-    my_service_mcord_component1:
-      description: MCORD Service default Component
-      type: tosca.nodes.MCORDComponent
-      requirements:
-          - provider_service:
-              node: service_mcord
-              relationship: tosca.relationships.MemberOfService
-          - mcord_slice:
-              node: mysite_mcord_slice1
-              relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/MCORDServiceVBBU.yaml b/xos/tosca/MCORDServiceVBBU.yaml
deleted file mode 100644
index 406c83e..0000000
--- a/xos/tosca/MCORDServiceVBBU.yaml
+++ /dev/null
@@ -1,162 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup MCORD-related services.
-
-imports:
-   - custom_types/xos.yaml
-
-node_types:
-    tosca.nodes.MCORDComponent:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A Service Component of MCORD Service.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of component
-            s_tag:
-                type: string
-                required: false
-                default: 200
-                description: VTN stag port-name
-            display_message:
-                type: string
-                required: false
-                default: MCORD Component ready
-                description: Component message
-
-topology_template:
-  node_templates:
-
-    Stanford_Deployment:
-      type: tosca.nodes.Deployment
-
-    computeBBU1:
-      type: tosca.nodes.Node
-      requirements:
-        - site:
-            node: Stanford_University
-            relationship: tosca.relationships.MemberOfSite
-        - deployment:
-            node: Stanford_Deployment
-            relationship: tosca.relationships.MemberOfDeployment
-
-    Topology:
-      type: tosca.nodes.DashboardView
-      properties:
-          url: template:xosMcordTopology
-
-    padmin@vicci.org:
-      type: tosca.nodes.User
-      properties:
-          firstname: XOS
-          lastname: admin
-          is_admin: true
-      requirements:
-          - mcord_dashboard:
-              node: Topology
-              relationship: tosca.relationships.UsesDashboard
-
-    # SERIVCES
-    vBBU:
-      type: tosca.nodes.Service
-      requirements:
-      properties:
-          view_url: /admin/mcordservice/
-          kind: RAN 
-
-    # Network Templates
-    Private:
-      type: tosca.nodes.NetworkTemplate
-
-    management_template:
-      type: tosca.nodes.NetworkTemplate
-      properties:
-          visibility: private
-          translation: none
-
-    # Network
-    Stanford_University_vBBU_network:
-      type: tosca.nodes.network.Network.XOS
-      properties:
-          ip_version: 4
-          labels: mcord_service_internal_net
-          cidr: 172.16.16.0/24
-          start_ip: 172.16.16.2
-          end_ip: 172.16.16.5
-          gateway_ip: 172.16.16.1
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: Stanford_University_vBBU_slice
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: Stanford_University_vBBU_slice
-              relationship: tosca.relationships.ConnectsToSlice
-
-    management:
-      type: tosca.nodes.network.Network
-      properties:
-          ip_version: 4
-          cidr: 10.102.90.0/24
-      requirements:
-          - network_template:
-              node: management_template
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-#              node: Stanford_University_vBBU_slice
-              node: Stanford_University_management
-              relationship: tosca.relationships.MemberOfSlice
-#          - connection:
-#              node: Stanford_University_vBBU_slice
-#              relationship: tosca.relationships.ConnectsToSlice
-
-
-    Stanford_University:
-      type: tosca.nodes.Site
-
-    ubuntu-14.04-server-cloudimg-amd64-disk1:
-      type: tosca.nodes.Image
-              
-    Stanford_University_management:
-      description: This slice exists solely to own the management network
-      type: tosca.nodes.Slice
-      properties:
-          network: noauto
-      requirements:
-          - site:
-              node: Stanford_University
-              relationship: tosca.relationships.MemberOfSite
-
-    Stanford_University_vBBU_slice:
-      description: vBBU Service Slice
-      type: tosca.nodes.Slice
-#      properties:
-#          network: noauto
-      requirements:
-          - mcord_service:
-              node: vBBU 
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: Stanford_University
-              relationship: tosca.relationships.MemberOfSite
-          - default_image:
-                node: ubuntu-14.04-server-cloudimg-amd64-disk1 
-                relationship: tosca.relationships.DefaultImage
-      properties:
-          default_flavor: m1.medium
-          default_node: computeBBU2
-
-    Stanford_University_vBBU_component:
-      description: vBBU Service Component
-      type: tosca.nodes.MCORDComponent
-      requirements:
-          - provider_service:
-              node: vBBU
-              relationship: tosca.relationships.MemberOfService
-          - Stanford_University_vBBU_slice:
-              node: Stanford_University_vBBU_slice
-              relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/tosca/resources/mcordcomponent.py b/xos/tosca/resources/mcordcomponent.py
deleted file mode 100644
index 401dba3..0000000
--- a/xos/tosca/resources/mcordcomponent.py
+++ /dev/null
@@ -1,39 +0,0 @@
-import os
-import pdb
-import sys
-import tempfile
-sys.path.append("/opt/tosca")
-from translator.toscalib.tosca_template import ToscaTemplate
-import pdb
-
-from services.mcordservice.models import MCORDServiceComponent, MCORDService
-
-from xosresource import XOSResource
-
-class XOSMCORDComponent(XOSResource):
-    provides = "tosca.nodes.MCORDComponent"
-    xos_model = MCORDServiceComponent
-    name_field = None
-
-    def get_xos_args(self, throw_exception=True):
-        args = super(XOSMCORDComponent, self).get_xos_args()
-
-        provider_name = self.get_requirement("tosca.relationships.MemberOfService", throw_exception=throw_exception)
-        if provider_name:
-            args["provider_service"] = self.get_xos_object(MCORDService, 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("provider", None)
-        if provider_service:
-            return [ self.get_xos_object(provider_service=provider_service) ]
-        return []
-
-    def postprocess(self, obj):
-        pass
-
-    def can_delete(self, obj):
-        return super(XOSMCORDComponent, self).can_delete(obj)
-
diff --git a/xos/tosca/vBBU.yaml b/xos/tosca/vBBU.yaml
deleted file mode 100644
index 69aacb8..0000000
--- a/xos/tosca/vBBU.yaml
+++ /dev/null
@@ -1,148 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: Setup MCORD-related services.
-
-imports:
-   - custom_types/xos.yaml
-
-node_types:
-    tosca.nodes.MCORDComponent:
-        derived_from: tosca.nodes.Root
-        description: >
-            CORD: A Service Component of MCORD Service.
-        properties:
-            kind:
-                type: string
-                default: generic
-                description: Kind of component
-
-topology_template:
-  node_templates:
-    service_mcord_bbu:
-      type: tosca.nodes.Service
-      requirements:
-      properties:
-          view_url: /admin/mcordservice/
-          kind: mcordservice
-
-
-    Private:
-      type: tosca.nodes.NetworkTemplate
-
-    net-BBU1-private:
-      type: tosca.nodes.network.Network.XOS
-      properties:
-          ip_version: 4
-          labels: vBBU1_internal_net
-          cidr: 192.168.6.0/24
-          start_ip: 192.168.6.20
-          end_ip: 192.168.6.25
-          gateway_ip: 192.168.6.1
-      
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_mcord_bbu_slice1
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_mcord_bbu_slice1
-              relationship: tosca.relationships.ConnectsToSlice
-
-    net-BBU1-private2:
-      type: tosca.nodes.network.Network.XOS
-      properties:
-          ip_version: 4
-          labels: vBBU1_internal_net2
-          cidr: 192.168.7.0/24
-          start_ip: 192.168.7.20
-          end_ip: 192.168.7.25
-          gateway_ip: 192.168.7.1
-      
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_mcord_bbu_slice1
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_mcord_bbu_slice1
-              relationship: tosca.relationships.ConnectsToSlice
-
-    net-BBU1-private3:
-      type: tosca.nodes.network.Network.XOS
-      properties:
-          ip_version: 4
-          labels: vBBU1_internal_net3
-          cidr: 192.168.8.0/24
-          start_ip: 192.168.8.20
-          end_ip: 192.168.8.25
-          gateway_ip: 192.168.168.1
-      
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_mcord_bbu_slice1
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_mcord_bbu_slice1
-              relationship: tosca.relationships.ConnectsToSlice
-
-    net-Internet:
-      type: tosca.nodes.network.Network.XOS
-      properties:
-          ip_version: 4
-          labels: Internet
-          cidr: 10.128.13.0/24
-          start_ip: 10.128.13.20
-          end_ip: 10.128.13.25
-          gateway_ip: 10.128.13.1
-
-      requirements:
-          - network_template:
-              node: Private
-              relationship: tosca.relationships.UsesNetworkTemplate
-          - owner:
-              node: mysite_mcord_bbu_slice1
-              relationship: tosca.relationships.MemberOfSlice
-          - connection:
-              node: mysite_mcord_bbu_slice1
-              relationship: tosca.relationships.ConnectsToSlice
-
-    mysite:
-      type: tosca.nodes.Site
-
-    ubuntu-arm64-bbu-snapshot.img:
-      type: tosca.nodes.Image
-
-    mysite_mcord_bbu_slice1:
-      description: MCORD BBU Service Slice 1
-      type: tosca.nodes.Slice
-      requirements:
-          - mcord_bbu_service:
-              node: service_mcord_bbu
-              relationship: tosca.relationships.MemberOfService
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-          - default_image:
-                node: ubuntu-arm64-bbu-snapshot.img 
-                relationship: tosca.relationships.DefaultImage
-      properties:
-          default_flavor: m1.xlarge
-          default_node: computeBBU1
-
-    mcord_service_bbu_component1:
-      description: MCORD Service BBU Component
-      type: tosca.nodes.MCORDComponent
-      requirements:
-          - provider_service:
-              node: service_mcord_bbu
-              relationship: tosca.relationships.MemberOfService
-          - mcord_slice:
-              node: mysite_mcord_bbu_slice1
-              relationship: tosca.relationships.MemberOfSlice
diff --git a/xos/xos/settings.py b/xos/xos/settings.py
index e9513ee..c4c0f38 100644
--- a/xos/xos/settings.py
+++ b/xos/xos/settings.py
@@ -178,7 +178,6 @@
     'services.cord',
     'services.mcord',
     'services.helloworldservice_complete',
-    'services.mcordservice',
     'services.onos',
     'services.ceilometer',
     'services.requestrouter',
