<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!--
    (c) Copyright IBM Corporation 2015, 2017. All Rights Reserved.
    (c) Copyright HCL Technologies Ltd. 2018. All Rights Reserved.
    This is licensed under the following license.
    The Eclipse Public 1.0 License (http://www.eclipse.org/legal/epl-v10.html)
    U.S. Government Users Restricted Rights:  Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
-->
<plugin xmlns="http://www.urbancode.com/PluginXMLSchema_v1" xmlns:server="http://www.urbancode.com/PluginServerXMLSchema_v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <header>
    <identifier id="com.urbancode.air.plugin.cloudfoundry" name="CloudFoundry" version="34"/>
    <description>
    The Cloud Foundry plug-in uses the Cloud Foundry command line (cf) utility to interact with applications in a target Cloud Foundry system.
    </description>
    <tag>Cloud/CloudFoundry</tag>
    <server:required-server-version>6.0.1.0</server:required-server-version>
  </header>
  <step-type name="Bind Service">
    <description>This step binds a Cloud Foundry service instance onto a Cloud Foundry application.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example,  http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization where the application will be deployed, for example: some-space"/>
      </property>
      <property name="application" required="true">
        <server:property-ui type="textBox" label="Application Name" default-value="${p?:component/cf.appName}${p?:resource/cf.app}" description="The name of the application to bind to the service."/>
      </property>
      <property name="service" required="true">
        <server:property-ui type="textBox" label="Service name" default-value="${p:component/cf.service}" description="The name of the service to be bound."/>
      </property>
      <property name="selfSigned">
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed."/>
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="bindService.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Create Domain">
    <description>This step creates a domain in an organization.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example,  http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org" required="true">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space"/>
      </property>
      <property name="domain" required="true">
        <server:property-ui type="textBox" label="Domain" default-value="${p?:cf.domain}" description="Name of the domain owning the route."/>
      </property>
      <property name="selfSigned">
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="createDomain.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Create Route">
    <description>This step creates a URL route in a space.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example,  http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}" description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="domain" required="true">
        <server:property-ui type="textBox" label="Domain" default-value="${p?:cf.domain}" description="Name of the domain owning the route."/>
      </property>
      <property name="hostname">
        <server:property-ui type="textBox" label="Hostname" description="The hostname within the domain for the URL route."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed."/>
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="cliversion">
        <server:property-ui type="textBox" label="CLI Version" default-value="${p?:resource/cf.version}" description="Specify 7 if using version cli 7 else leave blank."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="createRoute.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Create or Update User-Provided Service">
    <description>This step creates or updates a user-provided service instance.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example,  http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org" required="true">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space" required="true">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="service" required="true">
        <server:property-ui type="textBox" label="User-Provided Service" default-value="${p:resource/cf.service}"  description="The name of the user-provided service."/>
      </property>
      <property name="credentials" required="true">
        <server:property-ui type="textAreaBox" label="Credentials" default-value="${p:resource/cf.credentials}"  description='Credentials, in JSON format, to be exposed in the VCAP_SERVICES environment variable for bound applications. A full file path may also be specified. Example: {"username":"admin", "password":"pa55woRD"} Windows users must escape each double quote with a backslash.'/>
      </property>
      <property name="logDrainURL">
        <server:property-ui type="textBox" label="Log Drain URL" default-value="${p?:resource/cf.logDrainURL}"  description="The URL to which logs for bound applications will be streamed."/>
      </property>
      <property name="routeServiceURL">
        <server:property-ui type="textBox" label="Route Service URL" default-value="${p?:resource/cf.routeSerivceURL}"  description="The URL to which requests for bound routes will be forwarded. Scheme for this URL must be https. Note: This feature was added in Cloud Foundry CLI v6.16.0."/>
      </property>
      <property name="selfSigned">
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="createOrUpdateUPS.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Create Service">
    <description>This setp creates a new Cloud Foundry Service.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="service" required="true">
        <server:property-ui type="textBox" label="Service name" default-value="${p:component/cf.service}" description="The name of the service."/>
      </property>
      <property name="serviceType" required="true">
        <server:property-ui type="textBox" label="Service type"  description="The type of service."/>
      </property>
      <property name="plan" required="true">
        <server:property-ui type="textBox" label="Service plan"  description="The service plan."/>
      </property>
      <property name="selfSigned">
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="createService.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Create Subdomain">
    <description>This step creates a subdomain in an organization.</description>
    <properties>
      <property name="api" required="true">
        <property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="org" required="true">
        <property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="subdomain" required="true">
        <property-ui type="textBox" label="Subdomain" default-value="${p:resource/cf.subdomain}" description="The name of the subdomain, as in: myapp of myapp.domain.org."/>
      </property>
      <property name="domain" required="true">
        <property-ui type="textBox" label="Domain" default-value="${p?:cf.domain}" description="The name of the domain, as in: domain.org of subdomain myapp.domain.org."/>
      </property>
      <property name="selfSigned" >
        <property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="createSubdomain.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Delete App">
    <description>This step deletes an application.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A url of the target Cloud Foundry system, for example:
		http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="application" required="true">
        <server:property-ui type="textBox" label="Application name" default-value="${p?:component/cf.appName}${p?:resource/cf.app}" description="The name of the application."/>
      </property>
      <property name="delete_Routes">
        <server:property-ui type="checkBox" label="Delete mapped routes" description="Also delete any mapped routes."/>
      </property>
      <property name="selfSigned">
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="deleteApp.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Delete Domain">
    <description>Delete a domain.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="domain">
        <server:property-ui type="textBox" label="Domain" default-value="${p?:cf.domain}" description="The name of the domain to remove."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="deleteDomain.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Delete Route">
    <description>This step deletes a route.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="domain">
        <server:property-ui type="textBox" label="Domain" default-value="${p?:cf.domain}" description="Name of the domain owning the route."/>
      </property>
      <property name="hostname">
        <server:property-ui type="textBox" label="Hostname" description="The hostname within the domain for the URL route."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not ne performed" />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="deleteRoute.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Delete Service">
    <description>This step deletes a Cloud Foundry Service.</description>
    <properties>
      <property name="api" required="true">
        <property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="org">
        <property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="name" required="true">
        <property-ui type="textBox" label="Service name" default-value="${p:component/cf.service}" description="The name of the service."/>
      </property>
      <property name="selfSigned">
        <property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="deleteService.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Delete Subdomain">
    <description>This step deletes a subdomain.</description>
    <properties>
      <property name="api" required="true">
        <property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="org">
        <property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="subdomain" required="true">
        <property-ui type="textBox" label="Subdomain" default-value="${p?:resource/cf.subdomain" description="The name of the subdomain, as in: myapp of myapp.domain.org."/>
      </property>
      <property name="domain" required="true">
        <property-ui type="textBox" label="Domain" default-value="${p?:cf.domain}" description="The name of the domain, as in: domain.org of myapp.domain.org."/>
      </property>
      <property name="selfSigned" >
        <property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="deleteSubdomain.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Execute CF Script">
    <description>This step executes a cf script. The context will be set up with the authenticated user and target space.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}" description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="script" required="true">
        <server:property-ui type="textAreaBox" label="Script" description="Each command needs to be on a new line."/>
      </property>
      <property name="args">
        <server:property-ui type="textBox" label="Arguments" description="These are the arguments to be passed to the script, separated by spaces."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="executeCFScript.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Execute CF bash file">
    <description>This step executes a bash file. The context will be set up with the authenticated user and target space. The sh command must be available from the command line.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="script" required="true">
        <server:property-ui type="textBox" label="Script" description="The path to the cf.bash file."/>
      </property>
      <property name="args">
        <server:property-ui type="textBox" label="Arguments" description="These are the arguments to be passed to the script, separated by spaces."/>
      </property>
      <property name="selfSigned">
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="executeBashScript.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Map Route">
    <description>This step adds a URL route to an application.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example:  http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="application" required="true">
        <server:property-ui type="textBox" label="Application name" default-value="${p?:component/cf.appName}${p?:resource/cf.app}" description="The name of the application."/>
      </property>
      <property name="domain" required="true">
        <server:property-ui type="textBox" label="Domain" default-value="${p?:cf.domain}" description="The domain to use, as in: example.com."/>
      </property>
      <property name="hostname">
        <server:property-ui type="textBox" label="Hostname" description="The hostname within the domain for the url route."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="mapRoute.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Push Application">
    <description>This step pushes the application with or without a manifest file. If a manifest file is found, then properties are used as overrides.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example:  http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="appName">
        <server:property-ui type="textBox" label="Application Name" description="The name of the application to use when deployed. Application Name is required, if not using a manifest."/>
      </property>
      <property name="path">
        <server:property-ui type="textBox" label="Application Path" description="The name of zip file or other file to push. If this file isn't in your working directory, you must specify a full file path. (Otherwise just the name of the file e.g. 'myApp.zip')"/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="manifest">
        <server:property-ui type="textBox" label="Manifest file" description="The name of the manifest file. If this file isn't in your working directory, you must specify a full file path. (Otherwise, just specify the name of the file, for example: 'manifest.xml')"/>
      </property>
      <property name="domain">
        <server:property-ui type="textBox" label="Domain" default-value="${p?:cf.domain}" description="Set a custom domain to be used when deploying the application."/>
      </property>
      <property name="subdomain">
        <server:property-ui type="textBox" label="Sub-domain" description="Define a subdomain for your application. This is useful to ensure that the URL route for the application is unique within the domain."/>
      </property>
      <property name="instances">
        <server:property-ui type="textBox" label="Number of instances" default-value="1" description="The number of instances of the application that will be created."/>
      </property>
      <property name="memory">
        <server:property-ui type="textBox" label="Memory limit" description="The memory limit, for example: 256M, 1024M, 1G."/>
      </property>
      <property name="disk">
        <server:property-ui type="textBox" label="Disk limit" description="The disk limit, for example: 256M, 1024M, 1G."/>
      </property>
      <property name="buildpack">
        <server:property-ui type="textBox" label="Custom buildpack" description="The name of the custom buildpack, for example: my-buildpack, or the Git URL, for example: https://github.com/heroku/heroku-buildpack-play.git)."/>
      </property>
      <property name="stack">
        <server:property-ui type="textBox" label="Stack" description=" The stack to use (a stack is a prebuilt file system, including an operating system, that can run applications)."/>
      </property>
      <property name="timeout">
        <server:property-ui type="textBox" label="Timeout" description="The maximum time (in seconds) to wait for application start. Other server side timeouts may apply."/>
      </property>
      <property name="nostart">
       <server:property-ui type="checkBox" label="No start" description="Does not start the application, if selected."/>
      </property>
      <property name="noroute">
       <server:property-ui type="checkBox" label="No route" description="Does not create a URL route for the application, if selected. Manually create and map a route later."/>
      </property>
      <property name="nomanifest">
       <server:property-ui type="checkBox" label="No manifest" description="Ignore the manifest file, if one exists."/>
      </property>
      <property name="nohostname">
       <server:property-ui type="checkBox" label="No hostname" description="Map the root domain to this application."/>
      </property>
      <property name="randomroute">
       <server:property-ui type="checkBox" label="Random route" description="Create a random route for this application."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="strategy" >
        <server:property-ui type="checkBox" label="Strategy" description="If checked, Deployment strategy, either rolling or null." />
      </property>
      <property name="endpoint">
        <server:property-ui type="textBox" label="Endpoint" description="Valid path on the app for an HTTP health check."/>
      </property>
      <property name="nowait" >
        <server:property-ui type="checkBox" label="No Wait" description="If checked, Exit when the first instance of the web process is healthy." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="cliversion">
        <server:property-ui type="textBox" label="CLI Version" default-value="${p?:resource/cf.version}" description="Specify 7 if using version cli 7 else leave blank."/>
      </property>      
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="pushApplication.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Restart App">
    <description>This step restarts an application.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, sfor example:  http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="application" required="true">
        <server:property-ui type="textBox" label="Application name" default-value="${p?:component/cf.appName}${p?:resource/cf.app}" description="The name of the application."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="restartApp.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Start App">
    <description>This step starts an application.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example:  http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
        </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
        </property>
      <property name="application" required="true">
        <server:property-ui type="textBox" label="Application name" default-value="${p?:component/cf.appName}${p?:resource/cf.app}" description="The name of the application."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plugin but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="startApp.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Stop App">
    <description>This step stops an application.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example:  http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for exaple: some-space."/>
      </property>
      <property name="application" required="true">
        <server:property-ui type="textBox" label="Application name" default-value="${p?:component/cf.appName}${p?:resource/cf.app}" description="The name of the application."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter"  default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="stopApp.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Unbind Service">
    <description>This step unbinds a Cloud Foundry Service from a cf.application.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="application" required="true">
        <server:property-ui type="textBox" label="Application name" default-value="${p?:component/cf.appName}${p?:resource/cf.app}" description="The name of the application."/>
      </property>
      <property name="service" required="true">
        <server:property-ui type="textBox" label="Service name" default-value="${p:component/cf.service}" description="The name of the service."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter" default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="unbindService.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="Unmap Route">
    <description>This step removes a url route to an application.</description>
    <properties>
      <property name="api" required="true">
        <server:property-ui type="textBox" label="API" default-value="${p:resource/cf.api}" description="A URL of the target Cloud Foundry system, for example: http://api.ng.bluemix.net."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" label="Cloud Foundry User" default-value="${p?:resource/cf.username}" description="The user name of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="secureBox" label="Cloud Foundry Password" default-value="${p?:resource/cf.password}" description="The password of the account that will interact with the Cloud Foundry system. Property is required, unless authenticated outside of UrbanCode Deploy."/>
      </property>
       <property name="org">
        <server:property-ui type="textBox" label="Organization" default-value="${p?:resource/cf.org}" description="The name of the organization where the application will be deployed."/>
      </property>
      <property name="space">
        <server:property-ui type="textBox" label="Space" default-value="${p?:resource/cf.space}"  description="The name of the space within the organization that the application will be deployed, for example: some-space."/>
      </property>
      <property name="application" required="true">
        <server:property-ui type="textBox" label="Application name" default-value="${p?:component/cf.appName}${p?:resource/cf.app}" description="The name of the application."/>
      </property>
      <property name="domain" required="true">
        <server:property-ui type="textBox" label="Domain" default-value="${p?:cf.domain}" description="The domain to use, as in: example.com."/>
      </property>
      <property name="hostname">
        <server:property-ui type="textBox" label="Hostname" description="The hostname within the domain for the URL route."/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
      <property name="cfHome">
        <property-ui type="textBox" label="CF_HOME" default-value="${p?:resource/cf.home}" description="Set the CF_HOME variable to explicitly define the location of the config.json file. A new CF_HOME will be used
            for each step, if not specified."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" hidden="true" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="interpreter">
        <property-ui type="selectBox" hidden="true" label="Use Shell Interpreter" default-value="${p&#63;:cf.interpreter}"
                     description="Use a shell to interpret cf commands. This provides backward compatibility with the community plug-in, but does not escape special characters."/>
        <value label="${p&#63;:cf.interpreter}">${p&#63;:cf.interpreter}</value>
        <value label="True">true</value>
        <value label="False">false</value>
      </property>
      <property name="envVars">
        <property-ui type="textAreaBox" hidden="true" label="Environment Variables" default-value="${p?:resource/cf.envVars}"
            description="Set environment variables using the following syntax: name=value. Separate each pair with a new line or comma."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="unmapRoute.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
  </step-type>
  <step-type name="CF Auto-Configure">
    <description>This step discovers and configures all organizations and spaces for each organization into a resource tree in UrbanCode Deploy.</description>
    <properties>
      <property name="api">
        <server:property-ui type="textBox" default-value="${p?:resource/cf.api}" label="Cloud Foundry API"
          description="The URL of the Cloud Foundry API endpoint."/>
      </property>
      <property name="commandPath">
        <server:property-ui type="textBox" default-value="${p?:resource/cf.commandPath}" label="Cloud Foundry CLI Path"
          description="The path to the cf command line script."/>
      </property>
      <property name="user" required="false">
        <server:property-ui type="textBox" default-value="${p?:resource/cf.username}" label="Cloud Foundry Username"
          description="The username to authenticate with the Cloud Foundry server."/>
      </property>
      <property name="password" required="false">
        <server:property-ui type="textBox" default-value="${p?:resource/cf.password}" label="Cloud Foundry Password"
          description="The password to authenticate with the Cloud Foundry server."/>
      </property>
      <property name="resourcePath">
        <server:property-ui type="textBox" default-value="${p?:resource.path}" label="Resource"
          description="The Resource being configured." hidden="true"/>
      </property>
      <property name="selfSigned" >
        <server:property-ui type="checkBox" label="Skip SSL Validation" description="If checked, SSL validation will not be performed." />
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/uDeployRestClient.jar:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="configureCF.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>

    <server:role>CloudFoundryController</server:role>
    <server:type>AUTO_CONFIGURE</server:type>
  </step-type>
  <step-type name="CF Discovery">
    <description>This step will discover if Cloud Foundry is on an agent, by checking common installation paths.  If Cloud Foundry is on the agent, UrbanCode Deploy will assign the role to the resource and set the command path property.</description>
    <properties>
      <property name="resourcePath">
        <server:property-ui type="textBox" default-value="${p:resource.path}" label="Resource"
          description="The Resource being configured." hidden="true"/>
      </property>
      <property name="overrideCommandPath">
        <server:property-ui type="textBox" default-value="${p?:agent/cf.commandPath}" label="Override CF CLI Path"
          description="Provide the full path to the cf executable file to override the auto discovery path."/>
      </property>
      <property name="cfHome">
        <server:property-ui type="textBox" default-value="${p?:agent/cf.home}" label="CF_HOME Directory"
          description="Full path to your CF_HOME directory for installation verification.
            Not required if the property is a system environment variable."/>
      </property>
      <property name="apiEndpoint">
        <server:property-ui type="textBox" default-value="${p?:agent/cf.api}" label="API Endpoint"
          description="Provide the API endpoint if the config.json file does not exist or is not configured correctly
            on the agent to be used during discovery."/>
      </property>
    </properties>
    <post-processing><![CDATA[
        if (properties.get("exitCode") != 0) {
            properties.put(new java.lang.String("Status"), new java.lang.String("Failure"));
        }
        else {
            properties.put("Status", "Success");
        }
     ]]></post-processing>
    <command program="${GROOVY_HOME}/bin/groovy">
      <arg value="-cp"/>
      <arg path="classes:lib/uDeployRestClient.jar:lib/securedata.jar:lib/jettison-1.1.jar:lib/commons-codec.jar:lib/CommonsUtil.jar:lib/commons-io.jar"/>
      <arg file="discoverCF.groovy"/>
      <arg file="${PLUGIN_INPUT_PROPS}"/>
      <arg file="${PLUGIN_OUTPUT_PROPS}"/>
    </command>
    <server:type>AUTO_DISCOVERY</server:type>
  </step-type>

        <!-- ============================================= -->
        <!-- CF Controller Role                             -->
        <!-- ============================================= -->

  <server:property-group name="CloudFoundryController" type="ResourceRole" default-name-property="cf.api">
    <server:description>The role for resources that represents a Cloud Controller in a Cloud Foundry instance.</server:description>
    <server:allowed-parent-roles/>
    <server:property name="cf.api">
      <server:property-ui 
        type="textBox" 
        label="cf.api"
        description="The URL of the Cloud Foundry API endpoint."/>
    </server:property>
    <server:property name="cf.commandPath">
      <server:property-ui
        type="textBox"
        label="cf.commandPath"
        description="The path to the directory where the cf command line executable resides. 
            You may reference this property as 'cf.commandPath'."/>
    </server:property>
    <server:property name="cf.username">
      <server:property-ui type="textBox" label="cf.username" description="The Cloud Foundry username."/>
    </server:property>
    <server:property name="cf.password">
      <server:property-ui type="secureBox" label="cf.password" description="The Cloud Foundry password to use."/>
    </server:property>
    <server:default-child-folders>
      <server:default-child-folder>Organizations</server:default-child-folder>
    </server:default-child-folders>
  </server:property-group>

        <!-- ============================================= -->
        <!-- CF Organization Role                          -->
        <!-- ============================================= -->

  <server:property-group name="CloudFoundryOrganization" type="ResourceRole" default-name-property="cf.org">
    <server:description>The role for resources that represents a Cloud Foundry organization in a Cloud Foundry instance.</server:description>
    <server:allowed-parent-roles>
      <server:allowed-parent-role>
        <server:allowed-role-name>CloudFoundryController</server:allowed-role-name>
        <server:folder-name>Organizations</server:folder-name>
      </server:allowed-parent-role>
    </server:allowed-parent-roles>
    <server:allowed-parent-roles/>
    <server:property name="cf.org" required="true">
      <server:property-ui type="textBox" label="cf.org" description="The Name of the Cloud Foundry organization."/>
    </server:property>
    <server:default-child-folders>
      <server:default-child-folder>Spaces</server:default-child-folder>
    </server:default-child-folders>
  </server:property-group>

        <!-- ============================================= -->
        <!-- CF Space Role                             -->
        <!-- ============================================= -->

  <server:property-group name="CloudFoundrySpace" type="ResourceRole" default-name-property="cf.space">
    <server:description>The role for resources that represents a Cloud Foundry space within an organization in a Cloud Foundry instance.</server:description>
    <server:allowed-parent-roles>
      <server:allowed-parent-role>
        <server:allowed-role-name>CloudFoundryOrganization</server:allowed-role-name>
        <server:folder-name>Spaces</server:folder-name>
      </server:allowed-parent-role>
    </server:allowed-parent-roles>
    <server:allowed-parent-roles/>
    <server:property name="cf.space" required="true">
      <server:property-ui type="textBox" label="cf.space" description="The Name of the Cloud Foundry space."/>
    </server:property>
  </server:property-group>

        <!-- ============================================= -->
        <!-- CF Application Role                             -->
        <!-- ============================================= -->

  <server:property-group name="CloudFoundryApp" type="ResourceRole" default-name-property="cf.app">
    <server:description>The role for resources that represents a Cloud Foundry application within an organization and space in a Cloud Foundry instance.</server:description>
    <server:allowed-parent-roles>
      <server:allowed-parent-role>
        <server:allowed-role-name>CloudFoundrySpace</server:allowed-role-name>
        <server:folder-name>Applications</server:folder-name>
      </server:allowed-parent-role>
    </server:allowed-parent-roles>
    <server:allowed-parent-roles/>
    <server:property name="cf.app" required="true">
      <server:property-ui type="textBox" label="cf.app" description="The Name of the Cloud Foundry application."/>
    </server:property>
  </server:property-group>
</plugin>
