.. _TelnetUI:

===================================
UI Definition of telnet application
===================================

.. code-block:: yaml

    Version: 2

    Templates:
      instance:
        ?:
          type: io.murano.resources.LinuxMuranoInstance
        name: generateHostname($.appConfiguration.unitNamingPattern, 1)
        flavor: $.instanceConfiguration.flavor
        image: $.instanceConfiguration.osImage
        keyname: $.instanceConfiguration.keyPair
        assignFloatingIp: $.appConfiguration.assignFloatingIP

    Application:
      ?:
        type: io.murano.apps.linux.Telnet
      name: $.appConfiguration.name
      instance: $instance


    Forms:
      - appConfiguration:
          fields:
            - name: title
              type: string
              required: false
              hidden: true
              description: Telnet is a service that allows a Telnet client to connect across a network and access a command session
            - name: name
              type: string
              label: Application Name
              description: >-
                Enter a desired name for the application. Just A-Z, a-z, 0-9, dash and
                underline are allowed.
              minLength: 2
              maxLength: 64
              regexpValidator: '^[-\w]+$'
              errorMessages:
                invalid: Just letters, numbers, underscores and hyphens are allowed.
              helpText: Just letters, numbers, underscores and hyphens are allowed.
            - name: dcInstances
              type: integer
              hidden: true
              initial: 1
            - name: assignFloatingIP
              type: boolean
              label: Assign Floating IP
              description: >-
                 Select to true to assign floating IP automatically
              initial: false
              required: false
              widgetMedia:
                css: {all: ['muranodashboard/css/checkbox.css']}
            - name: unitNamingPattern
              type: string
              label: Hostname
              description: >-
                For your convenience instance hostname can be specified.
                Enter a name or leave blank for random name generation.
              required: false
              regexpValidator: '^(([a-zA-Z0-9#][a-zA-Z0-9-#]*[a-zA-Z0-9#])\.)*([A-Za-z0-9#]|[A-Za-z0-9#][A-Za-z0-9-#]*[A-Za-z0-9#])$'
              helpText: Optional field for a machine hostname
              # temporaryHack
              widgetMedia:
                js: ['muranodashboard/js/support_placeholder.js']
                css: {all: ['muranodashboard/css/support_placeholder.css']}
          validators:
            # if unitNamingPattern is given and dcInstances > 1, then '#' should occur in unitNamingPattern
            - expr: $.appConfiguration.dcInstances < 2 or not $.appConfiguration.unitNamingPattern.bool() or '#' in $.appConfiguration.unitNamingPattern
              message: Incrementation symbol "#" is required in the Hostname template
      - instanceConfiguration:
          fields:
            - name: title
              type: string
              required: false
              hidden: true
              description: Specify some instance parameters on which the application would be created
            - name: flavor
              type: flavor
              label: Instance flavor
              description: >-
                Select registered in OpenStack flavor. Consider that application performance
                depends on this parameter.
              required: false
            - name: osImage
              type: image
              imageType: linux
              label: Instance image
              description: >-
                Select valid image for the application. Image should have Murano agent installed and
                registered in Glance.
            - name: keyPair
              type: keypair
              label: Key Pair
              description: >-
                Select the Key Pair to control access to instances. You can login to
                instances using this KeyPair after application deployment
              required: false
            - name: availabilityZone
              type: azone
              label: Availability zone
              description: Select availability zone where the application would be installed.
              required: false

