another merging with master branch
diff --git a/containers/MCORDServiceVBBU.yaml b/containers/MCORDServiceVBBU.yaml
deleted file mode 100644
index 406c83e..0000000
--- a/containers/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/containers/setup.yaml.new b/containers/setup.yaml.new
deleted file mode 100644
index 3c7bf8b..0000000
--- a/containers/setup.yaml.new
+++ /dev/null
@@ -1,212 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Adds OpenCloud Sites, Deployments, and Controllers.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    Stanford_Deployment:
-      type: tosca.nodes.Deployment
-      properties:
-          flavors: m1.large, m1.medium, m1.small
-
-    computeBBU1:
-      type: tosca.nodes.Node
-      requirements:
-        - site:
-            node: Stanford_University
-            relationship: tosca.relationships.MemberOfSite
-        - deployment:
-            node: Stanford_Deployment
-            relationship: tosca.relationships.MemberOfDeployment
-
-    computeBBU2:
-      type: tosca.nodes.Node
-      requirements:
-        - site:
-            node: Stanford_University
-            relationship: tosca.relationships.MemberOfSite
-        - deployment:
-            node: Stanford_Deployment
-            relationship: tosca.relationships.MemberOfDeployment
-
-    McordOpenStack:
-      type: tosca.nodes.Controller
-      requirements:
-          - deployment:
-              node: Stanford_Deployment
-              relationship: tosca.relationships.ControllerDeployment
-      properties:
-          backend_type: OpenStack
-          version: Kilo
-          auth_url: { get_script_env: [ SELF, adminrc, OS_AUTH_URL, LOCAL_FILE] }
-          admin_user: { get_script_env: [ SELF, adminrc, OS_USERNAME, LOCAL_FILE] }
-          admin_password: { get_script_env: [ SELF, adminrc, OS_PASSWORD, LOCAL_FILE] }
-          admin_tenant: { get_script_env: [ SELF, adminrc, OS_TENANT_NAME, LOCAL_FILE] }
-          domain: Default
-      artifacts:
-          adminrc: /root/setup/admin-openrc.sh
-
-    Stanford_University:
-      type: tosca.nodes.Site
-      properties:
-          display_name: Stanford University
-          site_url: http://xosproject.org/
-      requirements:
-          - deployment:
-               node: Stanford_Deployment
-               relationship: tosca.relationships.SiteDeployment
-               requirements:
-                   - controller:
-                       node: McordOpenStack
-                       relationship: tosca.relationships.UsesController
-
-    # This user already exists in XOS with this password
-    # It's an example of how to create new users
-    padmin@vicci.org:
-      type: tosca.nodes.User
-      requirements:
-          - site:
-              node: Stanford_University
-              relationship: tosca.relationships.MemberOfSite
-      properties:
-          is_admin: true
-          is_active: true
-          firstname: XOS
-          lastname: admin
-          password: letmein
-
-    johndoe@stanford.us:
-      type: tosca.nodes.User
-      properties:
-          password: letmein
-          firstname: john
-          lastname: doe
-      requirements:
-          - site:
-              node: Stanford_University
-              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
-
-    RRU:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vBBU
-          icon_url: /static/mCordServices/service_rru.png
-          kind: RAN
-    vBBU:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vBBU
-          icon_url: /static/mCordServices/service_server.png
-          kind: RAN
-
-    eSON:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: http://www.google.com
-          kind: RAN
-
-    # EPC
-    vMME:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: /mcord/?service=vMME
-          kind: vEPC
-
-    vSGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vSGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    vPGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vPGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    # EDGE
-    Cache:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Cache
-          icon_url: /static/mCordServices/service_cache.png
-          kind: EDGE
-
-    Firewall:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Firewall
-          icon_url: /static/mCordServices/service_firewall.png
-          kind: EDGE
-
-    Video Optimization:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Video%20Optimization
-          icon_url: /static/mCordServices/service_video.png
-          kind: EDGE
-
-
diff --git a/containers/setup.yaml.old b/containers/setup.yaml.old
deleted file mode 100644
index c13f0eb..0000000
--- a/containers/setup.yaml.old
+++ /dev/null
@@ -1,61 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Adds OpenCloud Sites, Deployments, and Controllers.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    MyDeployment:
-      type: tosca.nodes.Deployment
-      properties:
-          flavors: m1.large, m1.medium, m1.small
-
-    MyOpenStack:
-      type: tosca.nodes.Controller
-      requirements:
-          - deployment:
-              node: MyDeployment
-              relationship: tosca.relationships.ControllerDeployment
-      properties:
-          backend_type: OpenStack
-          version: Kilo
-          auth_url: { get_script_env: [ SELF, adminrc, OS_AUTH_URL, LOCAL_FILE] }
-          admin_user: { get_script_env: [ SELF, adminrc, OS_USERNAME, LOCAL_FILE] }
-          admin_password: { get_script_env: [ SELF, adminrc, OS_PASSWORD, LOCAL_FILE] }
-          admin_tenant: { get_script_env: [ SELF, adminrc, OS_TENANT_NAME, LOCAL_FILE] }
-          domain: Default
-      artifacts:
-          adminrc: /root/setup/admin-openrc.sh
-
-    mysite:
-      type: tosca.nodes.Site
-      properties:
-          display_name: MySite
-          site_url: http://xosproject.org/
-      requirements:
-          - deployment:
-               node: MyDeployment
-               relationship: tosca.relationships.SiteDeployment
-               requirements:
-                   - controller:
-                       node: MyOpenStack
-                       relationship: tosca.relationships.UsesController
-
-    # This user already exists in XOS with this password
-    # It's an example of how to create new users
-    padmin@vicci.org:
-      type: tosca.nodes.User
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-      properties:
-          is_admin: true
-          is_active: true
-          firstname: XOS
-          lastname: admin
-          password: letmein
diff --git a/containers/tmp.yaml b/containers/tmp.yaml
deleted file mode 100644
index 32f2a12..0000000
--- a/containers/tmp.yaml
+++ /dev/null
@@ -1,130 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Adds OpenCloud Sites, Deployments, and Controllers.
-
-imports:
-   - custom_types/xos.yaml
-
-    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
-
-    RRU:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vBBU
-          icon_url: /static/mCordServices/service_rru.png
-          kind: RAN
-
-    eSON:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: http://www.google.com
-          kind: RAN
-
-    # EPC
-    vMME:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: /mcord/?service=vMME
-          kind: vEPC
-
-    vSGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vSGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    vPGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vPGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    # EDGE
-    Cache:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Cache
-          icon_url: /static/mCordServices/service_cache.png
-          kind: EDGE
-
-    Firewall:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Firewall
-          icon_url: /static/mCordServices/service_firewall.png
-          kind: EDGE
-
-    Video Optimization:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Video%20Optimization
-          icon_url: /static/mCordServices/service_video.png
-          kind: EDGE
diff --git a/containers/tmp2.yaml b/containers/tmp2.yaml
deleted file mode 100644
index 3c7bf8b..0000000
--- a/containers/tmp2.yaml
+++ /dev/null
@@ -1,212 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Adds OpenCloud Sites, Deployments, and Controllers.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    Stanford_Deployment:
-      type: tosca.nodes.Deployment
-      properties:
-          flavors: m1.large, m1.medium, m1.small
-
-    computeBBU1:
-      type: tosca.nodes.Node
-      requirements:
-        - site:
-            node: Stanford_University
-            relationship: tosca.relationships.MemberOfSite
-        - deployment:
-            node: Stanford_Deployment
-            relationship: tosca.relationships.MemberOfDeployment
-
-    computeBBU2:
-      type: tosca.nodes.Node
-      requirements:
-        - site:
-            node: Stanford_University
-            relationship: tosca.relationships.MemberOfSite
-        - deployment:
-            node: Stanford_Deployment
-            relationship: tosca.relationships.MemberOfDeployment
-
-    McordOpenStack:
-      type: tosca.nodes.Controller
-      requirements:
-          - deployment:
-              node: Stanford_Deployment
-              relationship: tosca.relationships.ControllerDeployment
-      properties:
-          backend_type: OpenStack
-          version: Kilo
-          auth_url: { get_script_env: [ SELF, adminrc, OS_AUTH_URL, LOCAL_FILE] }
-          admin_user: { get_script_env: [ SELF, adminrc, OS_USERNAME, LOCAL_FILE] }
-          admin_password: { get_script_env: [ SELF, adminrc, OS_PASSWORD, LOCAL_FILE] }
-          admin_tenant: { get_script_env: [ SELF, adminrc, OS_TENANT_NAME, LOCAL_FILE] }
-          domain: Default
-      artifacts:
-          adminrc: /root/setup/admin-openrc.sh
-
-    Stanford_University:
-      type: tosca.nodes.Site
-      properties:
-          display_name: Stanford University
-          site_url: http://xosproject.org/
-      requirements:
-          - deployment:
-               node: Stanford_Deployment
-               relationship: tosca.relationships.SiteDeployment
-               requirements:
-                   - controller:
-                       node: McordOpenStack
-                       relationship: tosca.relationships.UsesController
-
-    # This user already exists in XOS with this password
-    # It's an example of how to create new users
-    padmin@vicci.org:
-      type: tosca.nodes.User
-      requirements:
-          - site:
-              node: Stanford_University
-              relationship: tosca.relationships.MemberOfSite
-      properties:
-          is_admin: true
-          is_active: true
-          firstname: XOS
-          lastname: admin
-          password: letmein
-
-    johndoe@stanford.us:
-      type: tosca.nodes.User
-      properties:
-          password: letmein
-          firstname: john
-          lastname: doe
-      requirements:
-          - site:
-              node: Stanford_University
-              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
-
-    RRU:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vBBU
-          icon_url: /static/mCordServices/service_rru.png
-          kind: RAN
-    vBBU:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vBBU
-          icon_url: /static/mCordServices/service_server.png
-          kind: RAN
-
-    eSON:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: http://www.google.com
-          kind: RAN
-
-    # EPC
-    vMME:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: /mcord/?service=vMME
-          kind: vEPC
-
-    vSGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vSGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    vPGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vPGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    # EDGE
-    Cache:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Cache
-          icon_url: /static/mCordServices/service_cache.png
-          kind: EDGE
-
-    Firewall:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Firewall
-          icon_url: /static/mCordServices/service_firewall.png
-          kind: EDGE
-
-    Video Optimization:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Video%20Optimization
-          icon_url: /static/mCordServices/service_video.png
-          kind: EDGE
-
-
diff --git a/xos/configurations/mcord/fixtures2.yaml b/xos/configurations/mcord/fixtures2.yaml
deleted file mode 100644
index ab16e85..0000000
--- a/xos/configurations/mcord/fixtures2.yaml
+++ /dev/null
@@ -1,33 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0

-

-description: Setup MCORD-related services.

-

-imports:

-   - custom_types/xos.yaml

-

-node_types:

-    tosca.nodes.VBBUComponent:

-        derived_from: tosca.nodes.Root

-        description: >

-            CORD: vBBU Component of MCORD Service.

-        properties:

-            kind:

-                type: string

-                default: generic

-                description: Kind of component

-            s1u_tag:

-                type: string

-                required: false

-                default: 201

-                description: VTN stag port-name

-            s1mme_tag:

-                type: string

-                required: false

-                default: 200

-                description: VTN stag port-name

-            rru_tag:

-                type: string

-                required: false

-                default: 199 

-                description: VTN stag port-name

-

diff --git a/xos/configurations/mcord/tosca_tmp/mcord.yaml b/xos/configurations/mcord/tosca_tmp/mcord.yaml
deleted file mode 100644
index 971e7a9..0000000
--- a/xos/configurations/mcord/tosca_tmp/mcord.yaml
+++ /dev/null
@@ -1,249 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0

-

-description: Setup MCORD-related services.

-

-imports:

-   - custom_types/xos.yaml

-

-node_types:

-

-    tosca.nodes.MCORDService:

-        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

-            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.VBBUComponent:

-        derived_from: tosca.nodes.Root

-        description: >

-            CORD: vBBU Component of MCORD Service.

-        properties:

-            kind:

-                type: string

-                default: generic

-                description: Kind of component

-            s1u_tag:

-                type: string

-                required: false

-                default: 201

-                description: VTN stag port-name

-            s1mme_tag:

-                type: string

-                required: false

-                default: 200

-                description: VTN stag port-name

-            rru_tag:

-                type: string

-                required: false

-                default: 199 

-                description: VTN stag port-name

-            display_message:

-                type: string

-                required: false

-                description: Just a message 

-

-

-topology_template:

-  node_templates:

-    service_mcord:

-      type: tosca.nodes.MCORDService

-      requirements:

-      properties:

-          kind: Mobile Services

-          view_url: /mcord/mcordservice

-          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }

-          private_key_fn: /opt/xos/configurations/mcord/mcord_private_key

-      artifacts:

-          pubkey: /opt/xos/configurations/mcord/mcord_public_key

-

-

-    Private:

-      type: tosca.nodes.NetworkTemplate

-

-    External:

-      type: tosca.nodes.NetworkTemplate

-

-    management_template:

-      type: tosca.nodes.NetworkTemplate

-      properties:

-          visibility: private

-          translation: none

-

-    management:

-      type: tosca.nodes.network.Network.XOS

-#      properties:

-#          no-create: true

-#          no-delete: true

-#          no-update: true

-

-    lan_3gpp_s1mme_network:

-      type: tosca.nodes.network.Network.XOS

-      properties:

-          ip_version: 4

-          labels: lan_3gpp_s1uc_net

-          cidr: 172.16.1.0/24

-          start_ip: 172.16.1.3

-          end_ip: 172.16.1.12

-          gateway_ip: 172.16.1.1

-      requirements:

-          - network_template:

-              node: External

-              relationship: tosca.relationships.UsesNetworkTemplate

-          - owner:

-              node: mysite_mobile_net

-              relationship: tosca.relationships.MemberOfSlice

-          - connection:

-              node: mysite_vbbu_slice1

-              relationship: tosca.relationships.ConnectsToSlice

-

-    lan_3gpp_s1u_network:

-      type: tosca.nodes.network.Network.XOS

-      properties:

-          ip_version: 4

-          labels: lan_3gpp_s1u_net

-          cidr: 172.16.2.0/24

-          start_ip: 172.16.2.3

-          end_ip: 172.16.2.12

-          gateway_ip: 172.16.16.1

-      requirements:

-          - network_template:

-              node: External

-              relationship: tosca.relationships.UsesNetworkTemplate

-          - owner:

-              node: mysite_mobile_net

-              relationship: tosca.relationships.MemberOfSlice

-          - connection:

-              node: mysite_vbbu_slice1

-              relationship: tosca.relationships.ConnectsToSlice

-

-    lan_rru_network:

-      type: tosca.nodes.network.Network.XOS

-      properties:

-          ip_version: 4

-          labels: lan_rru_net

-          cidr: 172.16.0.0/24

-          start_ip: 172.16.0.3

-          end_ip: 172.16.0.12

-          gateway_ip: 172.16.0.1

-      requirements:

-          - network_template:

-              node: External

-              relationship: tosca.relationships.UsesNetworkTemplate

-          - owner:

-              node: mysite_mobile_net

-              relationship: tosca.relationships.MemberOfSlice

-          - connection:

-              node: mysite_vbbu_slice1

-              relationship: tosca.relationships.ConnectsToSlice

-

-    mysite:

-      type: tosca.nodes.Site

-

-    mcord-bbu-multi-nic:

-      type: tosca.nodes.Image

-

-    mysite_management:

-      description: This slice exists solely to own the management network

-      type: tosca.nodes.Slice

-      properties:

-          network: noauto

-      requirements:

-          - site:

-              node: mysite

-              relationship: tosca.relationships.MemberOfSite

-

-    mysite_mobile_net:

-      description: This slice exists solely to own the mobile network

-      type: tosca.nodes.Slice

-      properties:

-          network: noauto

-      requirements:

-          - site:

-              node: mysite

-              relationship: tosca.relationships.MemberOfSite

-

-    mysite_vbbu_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: mcord-bbu-multi-nic 

-                relationship: tosca.relationships.DefaultImage

-          - management:

-              node: management

-              relationship: tosca.relationships.ConnectsToNetwork

-      properties:

-          network: noauto

-          default_flavor: m1.xlarge

-          default_node: computeBBU2 

-    

-    mysite_VBBU_Component:

-      description: MCORD Service default Component

-      type: tosca.nodes.VBBUComponent

-      requirements:

-          - provider_service:

-              node: service_mcord

-              relationship: tosca.relationships.MemberOfService

-          - vbbu_slice:

-              node: mysite_vbbu_slice1

-              relationship: tosca.relationships.MemberOfSlice

-      properties:

-          display_message: vBBU looks good!

-          s1u_tag: 201

-          s1mme_tag: 200

-          rru_tag: 199 

diff --git a/xos/configurations/mcord/tosca_tmp/setup.yaml.new b/xos/configurations/mcord/tosca_tmp/setup.yaml.new
deleted file mode 100644
index 3c7bf8b..0000000
--- a/xos/configurations/mcord/tosca_tmp/setup.yaml.new
+++ /dev/null
@@ -1,212 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Adds OpenCloud Sites, Deployments, and Controllers.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    Stanford_Deployment:
-      type: tosca.nodes.Deployment
-      properties:
-          flavors: m1.large, m1.medium, m1.small
-
-    computeBBU1:
-      type: tosca.nodes.Node
-      requirements:
-        - site:
-            node: Stanford_University
-            relationship: tosca.relationships.MemberOfSite
-        - deployment:
-            node: Stanford_Deployment
-            relationship: tosca.relationships.MemberOfDeployment
-
-    computeBBU2:
-      type: tosca.nodes.Node
-      requirements:
-        - site:
-            node: Stanford_University
-            relationship: tosca.relationships.MemberOfSite
-        - deployment:
-            node: Stanford_Deployment
-            relationship: tosca.relationships.MemberOfDeployment
-
-    McordOpenStack:
-      type: tosca.nodes.Controller
-      requirements:
-          - deployment:
-              node: Stanford_Deployment
-              relationship: tosca.relationships.ControllerDeployment
-      properties:
-          backend_type: OpenStack
-          version: Kilo
-          auth_url: { get_script_env: [ SELF, adminrc, OS_AUTH_URL, LOCAL_FILE] }
-          admin_user: { get_script_env: [ SELF, adminrc, OS_USERNAME, LOCAL_FILE] }
-          admin_password: { get_script_env: [ SELF, adminrc, OS_PASSWORD, LOCAL_FILE] }
-          admin_tenant: { get_script_env: [ SELF, adminrc, OS_TENANT_NAME, LOCAL_FILE] }
-          domain: Default
-      artifacts:
-          adminrc: /root/setup/admin-openrc.sh
-
-    Stanford_University:
-      type: tosca.nodes.Site
-      properties:
-          display_name: Stanford University
-          site_url: http://xosproject.org/
-      requirements:
-          - deployment:
-               node: Stanford_Deployment
-               relationship: tosca.relationships.SiteDeployment
-               requirements:
-                   - controller:
-                       node: McordOpenStack
-                       relationship: tosca.relationships.UsesController
-
-    # This user already exists in XOS with this password
-    # It's an example of how to create new users
-    padmin@vicci.org:
-      type: tosca.nodes.User
-      requirements:
-          - site:
-              node: Stanford_University
-              relationship: tosca.relationships.MemberOfSite
-      properties:
-          is_admin: true
-          is_active: true
-          firstname: XOS
-          lastname: admin
-          password: letmein
-
-    johndoe@stanford.us:
-      type: tosca.nodes.User
-      properties:
-          password: letmein
-          firstname: john
-          lastname: doe
-      requirements:
-          - site:
-              node: Stanford_University
-              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
-
-    RRU:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vBBU
-          icon_url: /static/mCordServices/service_rru.png
-          kind: RAN
-    vBBU:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vBBU
-          icon_url: /static/mCordServices/service_server.png
-          kind: RAN
-
-    eSON:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: http://www.google.com
-          kind: RAN
-
-    # EPC
-    vMME:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: /mcord/?service=vMME
-          kind: vEPC
-
-    vSGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vSGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    vPGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vPGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    # EDGE
-    Cache:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Cache
-          icon_url: /static/mCordServices/service_cache.png
-          kind: EDGE
-
-    Firewall:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Firewall
-          icon_url: /static/mCordServices/service_firewall.png
-          kind: EDGE
-
-    Video Optimization:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Video%20Optimization
-          icon_url: /static/mCordServices/service_video.png
-          kind: EDGE
-
-
diff --git a/xos/configurations/mcord/tosca_tmp/setup.yaml.old b/xos/configurations/mcord/tosca_tmp/setup.yaml.old
deleted file mode 100644
index c13f0eb..0000000
--- a/xos/configurations/mcord/tosca_tmp/setup.yaml.old
+++ /dev/null
@@ -1,61 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Adds OpenCloud Sites, Deployments, and Controllers.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    MyDeployment:
-      type: tosca.nodes.Deployment
-      properties:
-          flavors: m1.large, m1.medium, m1.small
-
-    MyOpenStack:
-      type: tosca.nodes.Controller
-      requirements:
-          - deployment:
-              node: MyDeployment
-              relationship: tosca.relationships.ControllerDeployment
-      properties:
-          backend_type: OpenStack
-          version: Kilo
-          auth_url: { get_script_env: [ SELF, adminrc, OS_AUTH_URL, LOCAL_FILE] }
-          admin_user: { get_script_env: [ SELF, adminrc, OS_USERNAME, LOCAL_FILE] }
-          admin_password: { get_script_env: [ SELF, adminrc, OS_PASSWORD, LOCAL_FILE] }
-          admin_tenant: { get_script_env: [ SELF, adminrc, OS_TENANT_NAME, LOCAL_FILE] }
-          domain: Default
-      artifacts:
-          adminrc: /root/setup/admin-openrc.sh
-
-    mysite:
-      type: tosca.nodes.Site
-      properties:
-          display_name: MySite
-          site_url: http://xosproject.org/
-      requirements:
-          - deployment:
-               node: MyDeployment
-               relationship: tosca.relationships.SiteDeployment
-               requirements:
-                   - controller:
-                       node: MyOpenStack
-                       relationship: tosca.relationships.UsesController
-
-    # This user already exists in XOS with this password
-    # It's an example of how to create new users
-    padmin@vicci.org:
-      type: tosca.nodes.User
-      requirements:
-          - site:
-              node: mysite
-              relationship: tosca.relationships.MemberOfSite
-      properties:
-          is_admin: true
-          is_active: true
-          firstname: XOS
-          lastname: admin
-          password: letmein
diff --git a/xos/configurations/mcord/tosca_tmp/tmp.yaml b/xos/configurations/mcord/tosca_tmp/tmp.yaml
deleted file mode 100644
index 32f2a12..0000000
--- a/xos/configurations/mcord/tosca_tmp/tmp.yaml
+++ /dev/null
@@ -1,130 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Adds OpenCloud Sites, Deployments, and Controllers.
-
-imports:
-   - custom_types/xos.yaml
-
-    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
-
-    RRU:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vBBU
-          icon_url: /static/mCordServices/service_rru.png
-          kind: RAN
-
-    eSON:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: http://www.google.com
-          kind: RAN
-
-    # EPC
-    vMME:
-      type: tosca.nodes.Service
-      properties:
-          icon_url: /static/mCordServices/service_server.png
-          view_url: /mcord/?service=vMME
-          kind: vEPC
-
-    vSGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vSGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    vPGW:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=vPGW
-          icon_url: /static/mCordServices/service_server.png
-          kind: vEPC
-
-    # EDGE
-    Cache:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Cache
-          icon_url: /static/mCordServices/service_cache.png
-          kind: EDGE
-
-    Firewall:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Firewall
-          icon_url: /static/mCordServices/service_firewall.png
-          kind: EDGE
-
-    Video Optimization:
-      type: tosca.nodes.Service
-      properties:
-          view_url: /mcord/?service=Video%20Optimization
-          icon_url: /static/mCordServices/service_video.png
-          kind: EDGE
diff --git a/xos/configurations/mcord/tosca_tmp/tmp2.yaml b/xos/configurations/mcord/tosca_tmp/tmp2.yaml
deleted file mode 100644
index 7282945..0000000
--- a/xos/configurations/mcord/tosca_tmp/tmp2.yaml
+++ /dev/null
@@ -1,75 +0,0 @@
-tosca_definitions_version: tosca_simple_yaml_1_0
-
-description: >
-    * Adds OpenCloud Sites, Deployments, and Controllers.
-
-imports:
-   - custom_types/xos.yaml
-
-topology_template:
-  node_templates:
-
-    # This user already exists in XOS with this password
-    # It's an example of how to create new users
-
-    johndoe@stanford.us:
-      type: tosca.nodes.User
-      properties:
-          password: letmein
-          firstname: john
-          lastname: doe
-    
-    # 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
-
diff --git a/xos/services/mcord/models.py b/xos/services/mcord/models.py
index 1b2bd65..ed13ac3 100644
--- a/xos/services/mcord/models.py
+++ b/xos/services/mcord/models.py
@@ -15,6 +15,7 @@
 from xos.config import Config
 
 MCORD_KIND = "RAN" # This should be changed later I did it fo demo
+VNFM_KIND = "vEPC" # This should be changed later I did it fo demo
 MCORD_USE_VTN = getattr(Config(), "networking_use_vtn", False)
 VBBU_KIND = "RAN"
 VSGW_KIND = "vSGW"
@@ -23,6 +24,77 @@
 # 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 ProxyService(Service):
+    KIND = VNFM_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 = "mcord"
+        verbose_name = "MCORD VNFM Service"
+
+class VSGWTenant(Tenant):
+    class Meta:
+        proxy = True
+
+    KIND = VSGW_KIND
+
+    default_attributes = {"status": None, "action": None, "control": None, "extra": None}
+    def __init__(self, *args, **kwargs):
+        proxy_services = VNFMService.get_service_objects().all()
+        if volt_services:
+            self._meta.get_field("provider_service").default = proxy_services[0].id
+        super(VSGWTenant, self).__init__(*args, **kwargs)
+
+    @property
+    def status(self):
+        return self.get_attribute("status", self.default_attributes["status"])
+
+    @status.setter
+    def status(self, value):
+        self.set_attribute("status", value)
+
+    @property
+    def action(self):
+        return self.get_attribute("action", self.default_attributes["action"])
+
+    @action.setter
+    def action(self, value):
+        self.set_attribute("action", value)
+
+    @property
+    def control(self):
+        return self.get_attribute("control", self.default_attributes["control"])
+
+    @control.setter
+    def control(self, value):
+        self.set_attribute("control", value)
+
+    @property
+    def extra(self):
+        return self.get_attribute("extra", self.default_attributes["extra"])
+
+    @extra.setter
+    def extra(self, value):
+        self.set_attribute("extra", value)
+
+
+    def save(self, *args, **kwargs):
+
+        super(VSGWTenant, self).save(*args, **kwargs)
+        model_policy_mcord_service_component(self.pk)
+
+    def delete(self, *args, **kwargs):
+        super(VSGWTenant, self).delete(*args, **kwargs)
+
+
+# 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 MCORDService(Service):
     KIND = MCORD_KIND
 
diff --git a/xos/services/mcord/models.py.old b/xos/services/mcord/models.py.old
deleted file mode 100644
index 611e990..0000000
--- a/xos/services/mcord/models.py.old
+++ /dev/null
@@ -1,289 +0,0 @@
-from django.db import models
-from core.models import Service, PlCoreBase, Slice, Instance, Tenant, TenantWithContainer, Node, Image, User, Flavor, Subscriber, NetworkParameter, NetworkParameterType, AddressPool, Port
-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
-from core.models import Tag
-from core.models.service import LeastLoadedNodeScheduler
-import traceback
-from xos.exceptions import *
-from core.models import SlicePrivilege, SitePrivilege
-from sets import Set
-from xos.config import Config
-
-MCORD_KIND = "MCORD"
-MCORD_USE_VTN = getattr(Config(), "networking_use_vtn", False)
-VBBU_KIND = "vBBU"
-VSGW_KIND = "vSGW"
-VPGW_KIND = "vPGW"
-# some comment
-# 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 = "mcord"
-        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 VBBUComponent(TenantWithContainer):
-
-    class Meta:
-        # Same as a above, HelloWorldTenantComplete is represented as a
-        # TenantWithContainer, but we change the python behavior.
-        proxy = True
-        verbose_name = "VBBU MCORD Service Component"
-
-    # The kind of the service is used on forms to differentiate this service
-    # from the other services.
-    KIND = VBBU_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 = ("s1u_ip", "s1u_mac",
-                       "s1mme_ip", "s1mme_mac",
-                       "rru_ip", "rru_mac")
-
-    # default_attributes is used cleanly indicate what the default values for
-    # the fields are.
-    default_attributes = {"display_message": "VBBU Component is ready!", "s1u_tag": "201", "s1mme_tag": "200", "rru_tag": "199"}
-    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(VBBUComponent, 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(VBBUComponent, 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 save_instance(self, instance):
-        with transaction.atomic():
-            super(VBBUComponent, self).save_instance(instance)
-            if instance.isolation in ["vm"]:
-                ntypes = ["s1u", "s1mme", "rru"]
-                for i in range(len(ntypes)): 
-                    ntype = ntypes[i]
-                    lan_network = self.get_lan_network(instance, ntype)
-#                    port = self.find_or_make_port(instance, lan_network)
-                    if ntype == "s1u":
-                        print "S1U_TAG", self.s1u_tag
-                        s1uport = self.find_or_make_port(instance, lan_network)
-                        s1uport.set_parameter("s_tag", self.s1u_tag)
-                        s1uport.set_parameter("neutron_port_name", "stag-%s" % self.s1u_tag)
-                        s1uport.save()
-                    elif ntype == "s1mme":
-                        print "MME_TAG", self.s1mme_tag
-                        mmeport = self.find_or_make_port(instance, lan_network)
-                        mmeport.set_parameter("s_tag", self.s1mme_tag)
-                        mmeport.set_parameter("neutron_port_name", "stag-%s" % self.s1mme_tag)
-                        mmeport.save()
-                    elif ntype == "rru":
-                        print "RRU_TAG", self.rru_tag
-                        rruport = self.find_or_make_port(instance, lan_network)
-                        rruport.set_parameter("s_tag", self.rru_tag)
-                        rruport.set_parameter("neutron_port_name", "stag-%s" % self.rru_tag)
-                        rruport.save()
- 
-    def delete(self, *args, **kwargs):
-        # Delete the instance that was created for this tenant
-        self.cleanup_container()
-        super(VBBUComponent, self).delete(*args, **kwargs)
-
-    def find_or_make_port(self, instance, network, **kwargs):
-        port = Port.objects.filter(instance=instance, network=network)
-        if port:
-            port = port[0]
-        else:
-            port = Port(instance=instance, network=network, **kwargs)
-            port.save()
-        return port
-
-    def get_lan_network(self, instance, ntype):
-        slice = self.provider_service.slices.all()[0]
-        lan_networks = [x for x in slice.networks.all() if ntype in x.name]
-        if not lan_networks:
-            raise XOSProgrammingError("No lan_network")
-        return lan_networks[0]
-
-    def manage_container(self):
-        from core.models import Instance, Flavor
-
-        if self.deleted:
-            return
-
-        # For container or container_vm isolation, use what TenantWithCotnainer
-        # provides us
-        slice = self.get_slice()
-        if slice.default_isolation in ["container_vm", "container"]:
-            super(VBBUComponent,self).manage_container()
-            return
-
-        if not self.s1u_tag:
-            raise XOSConfigurationError("S1U_TAG is missed")
-
-        if not self.s1mme_tag:
-            raise XOSConfigurationError("S1U_TAG is missed")
-
-        if not self.rru_tag:
-            raise XOSConfigurationError("S1U_TAG is missed")
-
-        if self.instance:
-            # We're good.
-            return
-
-        instance = self.make_instance_for_s_tag(self.s1u_tag)
-        self.instance = instance
-        super(TenantWithContainer, self).save()
-
-    def get_slice(self):
-        if not self.provider_service.slices.count():
-            raise XOSConfigurationError("The service has no slices")
-        slice = self.provider_service.slices.all()[0]
-        return slice
-
-    def make_instance_for_s_tag(self, s_tag):
-        slice = self.provider_service.slices.all()[0]            
-        flavors = Flavor.objects.filter(name=slice.default_flavor)
-        if not flavors:
-            raise XOSConfigurationError("No default flavor")
-        default_flavor = slice.default_flavor
-        slice = self.provider_service.slices.all()[0]
-        if slice.default_isolation == "container_vm":
-            (node, parent) = ContainerVmScheduler(slice).pick()
-        else:
-            (node, parent) = LeastLoadedNodeScheduler(slice).pick()
-        instance = Instance(slice = slice,
-                        node = node,
-                        image = self.image,
-                        creator = self.creator,
-                        deployment = node.site_deployment.deployment,
-                        flavor = flavors[0],
-                        isolation = slice.default_isolation,
-                        parent = parent)
-        self.save_instance(instance)
-        return instance
-
-    def ip_to_mac(self, ip):
-        (a, b, c, d) = ip.split('.')
-        return "02:42:%02x:%02x:%02x:%02x" % (int(a), int(b), int(c), int(d))
-
-    # 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'])
-
-    @display_message.setter
-    def display_message(self, value):
-        self.set_attribute("display_message", value)
-
-    @property
-    def s1u_tag(self):
-        return self.get_attribute(
-            "s1u_tag",
-            self.default_attributes['s1u_tag'])
-
-    @s1u_tag.setter
-    def s1u_tag(self, value):
-        self.set_attribute("s1u_tag", value)
-
-    @property
-    def s1mme_tag(self):
-        return self.get_attribute(
-            "s1mme_tag",
-            self.default_attributes['s1mme_tag'])
-
-    @s1mme_tag.setter
-    def s1mme_tag(self, value):
-        self.set_attribute("s1mme_tag", value)
-
-    @property
-    def rru_tag(self):
-        return self.get_attribute(
-            "rru_tag",
-            self.default_attributes['rru_tag'])
-
-    @rru_tag.setter
-    def rru_tag(self, value):
-        self.set_attribute("rru_tag", value)
-
-
-    @property
-    def addresses(self):
-        if (not self.id) or (not self.instance):
-            return {}
-
-        addresses = {}
-        for ns in self.instance.ports.all():
-            if "s1u" in ns.network.name.lower():
-                addresses["s1u"] = (ns.ip, ns.mac)
-            elif "s1mme" in ns.network.name.lower():
-                addresses["s1mme"] = (ns.ip, ns.mac)
-            elif "rru" in ns.network.name.lower():
-                addresses["rru"] = (ns.ip, ns.mac)
-        return addresses
-
-
-    @property
-    def s1u_ip(self):
-        return self.addresses.get("s1u", (None, None))[0]
-    @property
-    def s1u_mac(self):
-        return self.addresses.get("s1u", (None, None))[1]
-    @property
-    def s1mme_ip(self):
-        return self.addresses.get("s1mme", (None, None))[0]
-    @property
-    def s1mme_mac(self):
-        return self.addresses.get("s1mme", (None, None))[1]
-    @property
-    def rru_ip(self):
-        return self.addresses.get("rru", (None, None))[0]
-    @property
-    def rru_mac(self):
-        return self.addresses.get("rru", (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 = VBBUComponent.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/mcord/models.py.old2 b/xos/services/mcord/models.py.old3
similarity index 92%
rename from xos/services/mcord/models.py.old2
rename to xos/services/mcord/models.py.old3
index 7e27a51..1b2bd65 100644
--- a/xos/services/mcord/models.py.old2
+++ b/xos/services/mcord/models.py.old3
@@ -14,9 +14,9 @@
 from sets import Set
 from xos.config import Config
 
-MCORD_KIND = "MCORD"
+MCORD_KIND = "RAN" # This should be changed later I did it fo demo
 MCORD_USE_VTN = getattr(Config(), "networking_use_vtn", False)
-VBBU_KIND = "vBBU"
+VBBU_KIND = "RAN"
 VSGW_KIND = "vSGW"
 VPGW_KIND = "vPGW"
 net_types = ("s1u", "s1mme", "rru")
@@ -59,7 +59,7 @@
                        "rru_ip", "rru_mac")
     # default_attributes is used cleanly indicate what the default values for
     # the fields are.
-    default_attributes = {"display_message": "VBBU Component is ready!", "s1u_tag": "201", "s1mme_tag": "200", "rru_tag": "199"}
+    default_attributes = {"display_message": "New vBBU Component", "s1u_tag": "901", "s1mme_tag": "900", "rru_tag": "999"}
     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
@@ -98,14 +98,14 @@
                         port.set_parameter("s_tag", self.s1u_tag)
                         port.set_parameter("neutron_port_name", "stag-%s" % self.s1u_tag)
                         port.save()
-#                    elif (ntype == "s1mme"):
-#                        port.set_parameter("s_tag", self.s1mme_tag)
-#                        port.set_parameter("neutron_port_name", "stag-%s" % self.s1mme_tag)
-#                        port.save()
-#                    elif (ntype == "rru"):
-#                        port.set_parameter("s_tag", self.rru_tag)
-#                        port.set_parameter("neutron_port_name", "stag-%s" % self.rru_tag)
-#                        port.save()
+                    elif (ntype == "s1mme"):
+                        port.set_parameter("s_tag", self.s1mme_tag)
+                        port.set_parameter("neutron_port_name", "stag-%s" % self.s1mme_tag)
+                        port.save()
+                    elif (ntype == "rru"):
+                        port.set_parameter("s_tag", self.rru_tag)
+                        port.set_parameter("neutron_port_name", "stag-%s" % self.rru_tag)
+                        port.save()
     
     def delete(self, *args, **kwargs):
         # Delete the instance that was created for this tenant
@@ -156,7 +156,7 @@
             # We're good.
             return
 
-        instance = self.make_instance(self)
+        instance = self.make_instance()
         self.instance = instance
         super(TenantWithContainer, self).save()
 
@@ -169,6 +169,7 @@
     def make_instance(self):
         slice = self.provider_service.slices.all()[0]            
         flavors = Flavor.objects.filter(name=slice.default_flavor)
+#        flavors = Flavor.objects.filter(name="m1.xlarge")
         if not flavors:
             raise XOSConfigurationError("No default flavor")
         default_flavor = slice.default_flavor
diff --git a/xos/synchronizers/vnfm/model-deps b/xos/synchronizers/vnfm/model-deps
new file mode 100644
index 0000000..0967ef4
--- /dev/null
+++ b/xos/synchronizers/vnfm/model-deps
@@ -0,0 +1 @@
+{}
diff --git a/xos/synchronizers/vnfm/run.sh b/xos/synchronizers/vnfm/run.sh
new file mode 100755
index 0000000..81cd4d4
--- /dev/null
+++ b/xos/synchronizers/vnfm/run.sh
@@ -0,0 +1,2 @@
+export XOS_DIR=/opt/xos
+python vnfm-synchronizer.py  -C $XOS_DIR/synchronizers/vnfm/vnfm_synchronizer_config
diff --git a/xos/synchronizers/vnfm/start.sh b/xos/synchronizers/vnfm/start.sh
new file mode 100755
index 0000000..5a61e1a
--- /dev/null
+++ b/xos/synchronizers/vnfm/start.sh
@@ -0,0 +1,2 @@
+export XOS_DIR=/opt/xos
+nohup python vnfm-synchronizer.py  -C $XOS_DIR/synchronizers/vnfm/vnfm_synchronizer_config > /dev/null 2>&1 &
diff --git a/xos/synchronizers/vnfm/steps/sync_tasks.py b/xos/synchronizers/vnfm/steps/sync_tasks.py
new file mode 100644
index 0000000..fb8988e
--- /dev/null
+++ b/xos/synchronizers/vnfm/steps/sync_tasks.py
@@ -0,0 +1,134 @@
+import os
+import requests
+import socket
+import sys
+import base64
+from django.db.models import F, Q
+from xos.config import Config
+from synchronizers.base.syncstep import SyncStep
+from core.models import Service, Port, Controller, Tag
+from core.models.service import COARSE_KIND
+from services.cord.models import VSGWTenant
+from services.cord.models import Tenant
+from xos.logger import Logger, logging
+from requests.auth import HTTPBasicAuth
+
+# hpclibrary will be in steps/..
+parentdir = os.path.join(os.path.dirname(__file__),"..")
+sys.path.insert(0,parentdir)
+
+logger = Logger(level=logging.INFO)
+
+# XXX should save and load this
+glo_saved_vtn_maps = []
+
+class SyncTasks(SyncStep):
+    requested_interval = 0 # 3600
+    provides=[Task]
+    observes=Task
+
+    def __init__(self, **args):
+        SyncStep.__init__(self, **args)
+
+    def call(self, **args):
+        global glo_saved_vtn_maps
+
+        logger.info("sync'ing vsg tenant to port addresses")
+
+        # build up a dictionary of port-->[wan_addrs] mappings
+        tasks_todo = {}
+        for vsg in VSGTenant.get_tenant_objects().all():
+            if not vsg.instance:
+                logger.info("skipping vsg %s because it has no instance" % vsg)
+
+            wan_ip = vsg.wan_container_ip
+            if not wan_ip:
+                logger.info("skipping vsg %s because it has no wan_container_ip" % vsg)
+
+            wan_mac = vsg.wan_container_mac
+            if not wan_mac:
+                logger.info("skipping vsg %s because it has no wan_container_mac" % vsg)
+
+            lan_network = vsg.get_lan_network(vsg.instance)
+            if not lan_network:
+                logger.info("skipping vsg %s because it has no lan_network" % vsg)
+
+            lan_port = Port.objects.filter(instance = vsg.instance, network=lan_network)
+            if not lan_port:
+                logger.info("skipping vsg %s because it has no lan_port" % vsg)
+            lan_port = lan_port[0]
+
+            if not lan_port.port_id:
+                logger.info("skipping vsg %s because its lan_port has no port_id" % vsg)
+
+            if not (lan_port.pk in port_addrs):
+                port_addrs[lan_port.pk] = []
+            entry = {"mac_address": wan_mac, "ip_address": wan_ip}
+            addr_pairs = port_addrs[lan_port.pk]
+            if not entry in addr_pairs:
+                 addr_pairs.append(entry)
+
+            # now do the VM_WAN_IP from the instance
+            if vsg.instance:
+                wan_vm_ip = vsg.wan_vm_ip
+                wan_vm_mac = vsg.wan_vm_mac
+                entry = {"mac_address": wan_vm_mac, "ip_address": wan_vm_ip}
+                if not entry in addr_pairs:
+                    addr_pairs.append(entry)
+
+        # Get all ports in all controllers
+        ports_by_id = {}
+        for controller in Controller.objects.all():
+            if not controller.admin_tenant:
+                logger.info("controller %s has no admin_tenant" % controller)
+                continue
+            try:
+                driver = self.driver.admin_driver(controller = controller)
+                ports = driver.shell.quantum.list_ports()["ports"]
+            except:
+                logger.log_exc("failed to get ports from controller %s" % controller)
+                continue
+
+            for port in ports:
+                ports_by_id[port["id"]] = port
+
+        for port_pk in port_addrs.keys():
+            port = Port.objects.get(pk=port_pk)
+            addr_pairs = port_addrs[port_pk]
+            neutron_port = ports_by_id.get(port.port_id,None)
+            if not neutron_port:
+                logger.info("failed to get neutron port for port %s" % port)
+                continue
+
+            ips = [x["ip_address"] for x in addr_pairs]
+
+            changed = False
+
+            # delete addresses in neutron that don't exist in XOS
+            aaps = neutron_port.get("allowed_address_pairs", [])
+            for aap in aaps[:]:
+                if not aap["ip_address"] in ips:
+                    logger.info("removing address %s from port %s" % (aap["ip_address"], port))
+                    aaps.remove(aap)
+                    changed = True
+
+            aaps_ips = [x["ip_address"] for x in aaps]
+
+            # add addresses in XOS that don't exist in neutron
+            for addr in addr_pairs:
+                if not addr["ip_address"] in aaps_ips:
+                    logger.info("adding address %s to port %s" % (addr, port))
+                    aaps.append( addr )
+                    aaps_ips.append(addr["ip_address"])
+                    changed = True
+
+            if changed:
+                logger.info("updating port %s" % port)
+                driver.shell.quantum.update_port(port.port_id, {"port": {"allowed_address_pairs": aaps}})
+
+
+
+
+
+
+
diff --git a/xos/synchronizers/vnfm/steps/sync_tenant.py b/xos/synchronizers/vnfm/steps/sync_tenant.py
new file mode 100644
index 0000000..4dfa177
--- /dev/null
+++ b/xos/synchronizers/vnfm/steps/sync_tenant.py
@@ -0,0 +1,95 @@
+import os
+import requests
+import socket
+import sys
+import base64
+from django.db.models import F, Q
+from xos.config import Config
+from synchronizers.base.syncstep import SyncStep
+from core.models import Service
+from core.models.service import COARSE_KIND
+from services.cord.models import Tenant
+from xos.logger import Logger, logging
+from requests.auth import HTTPBasicAuth
+
+# hpclibrary will be in steps/..
+parentdir = os.path.join(os.path.dirname(__file__),"..")
+sys.path.insert(0,parentdir)
+
+logger = Logger(level=logging.INFO)
+
+# XXX should save and load this
+glo_saved_vtn_maps = []
+
+class SyncVSGWTenant(SyncStep):
+    provides=[Tenant]
+    observes=Tenant
+    requested_interval=0
+
+    def __init__(self, **args):
+        SyncStep.__init__(self, **args)
+
+    def get_vnfm_service(self):
+#        vtn_tenant = Tenant.objects.filter(name="VTN_ONOS_app")   # XXX fixme - hardcoded
+#        if not vtn_tenant:
+#            raise "No VTN Onos App found"
+#        vtn_tenant = vtn_tenant[0]
+#
+#        vtn_service = vtn_tenant.provider_service
+        vnfm_service = Service.objects.filter(name="service_vnfm")  # XXX fixme - harcoded
+        if not vtn_service:
+            raise "No VNFM Service"
+
+        return vnfm_service[0]
+
+    def get_vnfm_params(self):
+        vnfm_service = self.get_vnfm_vsgw_service()
+
+        if not vnfm_service.slices.exists():
+            raise "VNFM Service has no slices"
+
+        vnfm_slice = vnfm_service.slices.all()[0]
+
+        if not vnfm_slice.instances.exists():
+            raise "VNFM Slice has no instances"
+
+        vnfm_instance = vnfm_slice.instances.all()[0]
+
+        return vnfm_instance.node.name
+
+    def call(self, **args):
+        global glo_saved_vtn_maps
+
+        logger.info("sync'ing vtn services")
+
+        vtn_maps = []
+        for service in Service.objects.all():
+           for id in service.get_vtn_src_ids():
+               dependencies = service.get_vtn_dependencies_ids()
+               if dependencies:
+                   for dependency in dependencies:
+                       vtn_maps.append( (id, dependency) )
+
+        for vtn_map in vtn_maps:
+            if not (vtn_map in glo_saved_vtn_maps):
+                # call vtn rest api to add map
+                url = "http://" + self.get_vtn_addr() + ":8181/vnfm/rest-api-url/service-dependency/%s/%s" % (vtn_map[0], vtn_map[1])
+
+                print "POST %s" % url
+                r = requests.post(url, auth=HTTPBasicAuth('karaf', 'karaf') )    # XXX fixme - hardcoded auth
+                if (r.status_code != 200):
+                    raise Exception("Received error from vtn service (%d)" % r.status_code)
+
+        for vtn_map in glo_saved_vtn_maps:
+            if not vtn_map in vtn_maps:
+                # call vtn rest api to delete map
+                url = "http://" + self.get_vtn_addr() + ":8181/vnfm/rest-api-url/service-dependency/%s/%s" % (vtn_map[0],vtn_map[1])
+
+                print "DELETE %s" % url
+                r = requests.delete(url, auth=HTTPBasicAuth('karaf', 'karaf') )    # XXX fixme - hardcoded auth
+                if (r.status_code != 200):
+                    raise Exception("Received error from vtn service (%d)" % r.status_code)
+
+        glo_saved_vtn_maps = vtn_maps
+        # TODO: save this
+
diff --git a/xos/synchronizers/vnfm/stop.sh b/xos/synchronizers/vnfm/stop.sh
new file mode 100755
index 0000000..64ccd03
--- /dev/null
+++ b/xos/synchronizers/vnfm/stop.sh
@@ -0,0 +1 @@
+pkill -9 -f vnfm-synchronizer.py
diff --git a/xos/synchronizers/vnfm/supervisor/vtn-observer.conf b/xos/synchronizers/vnfm/supervisor/vtn-observer.conf
new file mode 100644
index 0000000..714afa7
--- /dev/null
+++ b/xos/synchronizers/vnfm/supervisor/vtn-observer.conf
@@ -0,0 +1,2 @@
+[program:vtn-observer]
+command=python /opt/xos/observers/vbng/vtn-observer.py -C /opt/xos/observers/vbng/vtn_observer_config
diff --git a/xos/synchronizers/vnfm/vnfm-synchronizer.py b/xos/synchronizers/vnfm/vnfm-synchronizer.py
new file mode 100755
index 0000000..84bec4f
--- /dev/null
+++ b/xos/synchronizers/vnfm/vnfm-synchronizer.py
@@ -0,0 +1,11 @@
+#!/usr/bin/env python
+
+# This imports and runs ../../xos-observer.py
+
+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/vnfm/vnfm_synchronizer_config b/xos/synchronizers/vnfm/vnfm_synchronizer_config
new file mode 100644
index 0000000..55594e2
--- /dev/null
+++ b/xos/synchronizers/vnfm/vnfm_synchronizer_config
@@ -0,0 +1,44 @@
+
+[plc]
+name=plc
+deployment=VICCI
+
+[db]
+name=xos
+user=postgres
+password=password
+host=localhost
+port=5432
+
+[api]
+host=128.112.171.237
+port=8000
+ssl_key=None
+ssl_cert=None
+ca_ssl_cert=None
+ratelimit_enabled=0
+omf_enabled=0
+mail_support_address=support@localhost
+nova_enabled=True
+
+[observer]
+name=vnfm
+dependency_graph=/opt/xos/synchronizers/vnfm/model-deps
+steps_dir=/opt/xos/synchronizers/vnfm/steps
+sys_dir=/opt/xos/synchronizers/vnfm/sys
+deleters_dir=/opt/xos/synchronizers/vnfm/deleters
+log_file=console
+#/var/log/hpc.log
+driver=openstack
+pretend=False
+backoff_disabled=True
+
+[nova]
+ca_ssl_cert=/etc/ssl/certs/ca-certificates.crt
+
+[feefie]
+client_id='vicci_dev_central'
+user_id='pl'
+
+[networking]
+use_vtn=True