tosca_definitions_version: tosca_simple_yaml_1_0

description: Setup the ExampleService on the pod

imports:
   - custom_types/xos.yaml
   - custom_types/exampleservice.yaml

topology_template:
  node_templates:

    Private:
      type: tosca.nodes.NetworkTemplate

    management:
      type: tosca.nodes.network.Network.XOS
      properties:
          no-create: true
          no-delete: true
          no-update: true

    service#vrouter:
      type: tosca.nodes.Service
      properties:
          no-create: true
          no-delete: true
          no-update: true

    exampleservice-public:
      type: tosca.nodes.network.Network
      properties:
          ip_version: 4
      requirements:
          - network_template:
              node: Private
              relationship: tosca.relationships.UsesNetworkTemplate
          - owner:
              node: mysite_exampleservice
              relationship: tosca.relationships.MemberOfSlice
          - connection:
              node: mysite_exampleservice
              relationship: tosca.relationships.ConnectsToSlice
          - vrouter_tenant:
              node: service#vrouter
              relationship: tosca.relationships.TenantOfService

    mysite:
      type: tosca.nodes.Site

    trusty-server-multi-nic:
      type: tosca.nodes.Image

    mysite_exampleservice:
      description: This slice holds the ExampleService
      type: tosca.nodes.Slice
      properties:
          network: noauto
      requirements:
          - site:
              node: mysite
              relationship: tosca.relationships.MemberOfSite
          - management:
              node: management
              relationship: tosca.relationships.ConnectsToNetwork
          - exmapleserver:
              node: service#exampleservice
              relationship: tosca.relationships.MemberOfService
          - image:
              node: trusty-server-multi-nic
              relationship: tosca.relationships.DefaultImage

    service#exampleservice:
      type: tosca.nodes.ExampleService
      requirements:
          - management:
              node: management
              relationship: tosca.relationships.UsesNetwork
      properties:
          view_url: /admin/exampleservice/exampleservice/$id$/
          kind: exampleservice
          public_key: { get_artifact: [ SELF, pubkey, LOCAL_FILE] }
          private_key_fn: /opt/xos/services/exampleservice/keys/exampleservice_rsa
          service_message: hello
      artifacts:
          pubkey: /opt/xos/services/exampleservice/keys/exampleservice_rsa.pub

    tenant#exampletenant1:
        type: tosca.nodes.ExampleTenant
        properties:
            tenant_message: world
        requirements:
          - tenant:
              node: service#exampleservice
              relationship: tosca.relationships.TenantOfService
