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.xlarge, m1.large, m1.medium, m1.small

    m1.xlarge:
      type: tosca.nodes.Flavor


    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
    Topology:
      type: tosca.nodes.DashboardView
      properties:
          url: template:xosMcordTopology

    # 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
      properties:
          is_admin: true
          is_active: true
          firstname: XOS
          lastname: admin
          password: letmein
      requirements:
          - site:
              node: mysite
              relationship: tosca.relationships.MemberOfSite
          - mcord_dashboard:
              node: Topology
              relationship: tosca.relationships.UsesDashboard

    johndoe@stanford.us:
      type: tosca.nodes.User
      properties:
          is_active: true
          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


    # 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

    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

    vPGWC:
      type: tosca.nodes.Service
      properties:
          view_url: /mcord/?service=vPGWC
          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

