summaryrefslogtreecommitdiffstats
path: root/aai-service/installer/pom.xml
blob: 1e5cacfef1a372f5421b0c87d98fc00c794c095d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <parent>
        <groupId>org.onap.ccsdk.parent</groupId>
        <artifactId>odlparent-lite</artifactId>
        <version>1.4.0-SNAPSHOT</version>
        <relativePath/>
    </parent>

    <groupId>org.onap.ccsdk.sli.adaptors</groupId>
    <artifactId>aai-service-installer</artifactId>
    <version>0.6.0-SNAPSHOT</version>
    <packaging>pom</packaging>

    <name>ccsdk-sli-adaptors :: aai-service :: ${project.artifactId}</name>

    <properties>
        <application.name>ccsdk-aai-service</application.name>
        <features.boot>${application.name}</features.boot>
        <features.repositories>mvn:org.onap.ccsdk.sli.adaptors/${features.boot}/${project.version}/xml/features</features.repositories>
        <include.transitive.dependencies>false</include.transitive.dependencies>
    </properties>

    <dependencies>

        <dependency>
            <groupId>org.onap.ccsdk.sli.adaptors</groupId>
            <artifactId>${application.name}</artifactId>
            <version>${project.version}</version>
            <type>xml</type>
            <classifier>features</classifier>
            <exclusions>
                <exclusion>
                    <groupId>*</groupId>
                    <artifactId>*</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>org.onap.ccsdk.sli.adaptors</groupId>
            <artifactId>aai-service-provider</artifactId>
            <version>${project.version}</version>
        </dependency>


    </dependencies>

    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <id>maven-repo-zip</id>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <attach>true</attach>
                            <finalName>stage/${application.name}-${project.version}</finalName>
                            <descriptors>
                                <descriptor>src/assembly/assemble_mvnrepo_zip.xml</descriptor>
                            </descriptors>
                            <appendAssemblyId>true</appendAssemblyId>
                        </configuration>
                    </execution>
                    <execution>
                        <id>installer-zip</id>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <phase>package</phase>
                        <configuration>
                            <attach>true</attach>
                            <finalName>${application.name}-${project.version}-installer</finalName>
                            <descriptors>
                                <descriptor>src/assembly/assemble_installer_zip.xml</descriptor>
                            </descriptors>
                            <appendAssemblyId>false</appendAssemblyId>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <phase>prepare-package</phase>
                        <configuration>
                            <transitive>false</transitive>
                            <outputDirectory>${project.build.directory}/assembly/system</outputDirectory>
                            <overWriteReleases>false</overWriteReleases>
                            <overWriteSnapshots>true</overWriteSnapshots>
                            <overWriteIfNewer>true</overWriteIfNewer>
                            <useRepositoryLayout>true</useRepositoryLayout>
                            <addParentPoms>false</addParentPoms>
                            <copyPom>false</copyPom>
                            <includeGroupIds>org.onap.ccsdk.sli.adaptors,org.jvnet.jaxb2_commons</includeGroupIds>
                            <scope>provided</scope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <id>copy-version</id>
                        <goals>
                            <goal>copy-resources</goal>
                        </goals><!-- here the phase you need -->
                        <phase>validate</phase>
                        <configuration>
                            <outputDirectory>${basedir}/target/stage</outputDirectory>
                            <resources>
                                <resource>
                                    <directory>src/main/resources/scripts</directory>
                                    <includes>
                                        <include>install-feature.sh</include>
                                    </includes>
                                    <filtering>true</filtering>
                                </resource>
                            </resources>
                        </configuration>
                    </execution>

                </executions>
            </plugin>

        </plugins>
    </build>
</project>
word.Declaration */ .highlight .kn { color: #f92672 } /* Keyword.Namespace */ .highlight .kp { color: #66d9ef } /* Keyword.Pseudo */ .highlight .kr { color: #66d9ef } /* Keyword.Reserved */ .highlight .kt { color: #66d9ef } /* Keyword.Type */ .highlight .ld { color: #e6db74 } /* Literal.Date */ .highlight .m { color: #ae81ff } /* Literal.Number */ .highlight .s { color: #e6db74 } /* Literal.String */ .highlight .na { color: #a6e22e } /* Name.Attribute */ .highlight .nb { color: #f8f8f2 } /* Name.Builtin */ .highlight .nc { color: #a6e22e } /* Name.Class */ .highlight .no { color: #66d9ef } /* Name.Constant */ .highlight .nd { color: #a6e22e } /* Name.Decorator */ .highlight .ni { color: #f8f8f2 } /* Name.Entity */ .highlight .ne { color: #a6e22e } /* Name.Exception */ .highlight .nf { color: #a6e22e } /* Name.Function */ .highlight .nl { color: #f8f8f2 } /* Name.Label */ .highlight .nn { color: #f8f8f2 } /* Name.Namespace */ .highlight .nx { color: #a6e22e } /* Name.Other */ .highlight .py { color: #f8f8f2 } /* Name.Property */ .highlight .nt { color: #f92672 } /* Name.Tag */ .highlight .nv { color: #f8f8f2 } /* Name.Variable */ .highlight .ow { color: #f92672 } /* Operator.Word */ .highlight .w { color: #f8f8f2 } /* Text.Whitespace */ .highlight .mb { color: #ae81ff } /* Literal.Number.Bin */ .highlight .mf { color: #ae81ff } /* Literal.Number.Float */ .highlight .mh { color: #ae81ff } /* Literal.Number.Hex */ .highlight .mi { color: #ae81ff } /* Literal.Number.Integer */ .highlight .mo { color: #ae81ff } /* Literal.Number.Oct */ .highlight .sa { color: #e6db74 } /* Literal.String.Affix */ .highlight .sb { color: #e6db74 } /* Literal.String.Backtick */ .highlight .sc { color: #e6db74 } /* Literal.String.Char */ .highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */ .highlight .sd { color: #e6db74 } /* Literal.String.Doc */ .highlight .s2 { color: #e6db74 } /* Literal.String.Double */ .highlight .se { color: #ae81ff } /* Literal.String.Escape */ .highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */ .highlight .si { color: #e6db74 } /* Literal.String.Interpol */ .highlight .sx { color: #e6db74 } /* Literal.String.Other */ .highlight .sr { color: #e6db74 } /* Literal.String.Regex */ .highlight .s1 { color: #e6db74 } /* Literal.String.Single */ .highlight .ss { color: #e6db74 } /* Literal.String.Symbol */ .highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #a6e22e } /* Name.Function.Magic */ .highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */ .highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */ .highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */ .highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */ .highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */ } @media (prefers-color-scheme: light) { .highlight .hll { background-color: #ffffcc } .highlight .c { color: #888888 } /* Comment */ .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ .highlight .k { color: #008800; font-weight: bold } /* Keyword */ .highlight .ch { color: #888888 } /* Comment.Hashbang */ .highlight .cm { color: #888888 } /* Comment.Multiline */ .highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */ .highlight .cpf { color: #888888 } /* Comment.PreprocFile */ .highlight .c1 { color: #888888 } /* Comment.Single */ .highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */ .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ .highlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
<script type="text/ng-template"
	id="inventory_blueprint_update_popup.html">

	<style>
	.ecd-parameter-table
	{
	    border:   1px;
    	overflow: auto;
	}
	.ecd-parameter-table th
	{
		font-size: 1.4rem;
	}

	</style>

	<div class="b2b-modal-header ng-scope">
		<h2 id="myModalLabel" modal-title="">{{ecdapp.label}}</h2>
		<div class="corner-button in">
			<button type="button" class="close" aria-label="Close"
				ng-click="$dismiss('cancel')"></button>
		</div>
	</div>

	<div class="b2b-modal-body ng-scope ng-isolate-scope" tabindex="0"
		role="region" aria-label="Modal body content">
		<div ng-show="ecdapp.updateInProgress" class="row-nowrap">
			<div class="span" style="margin-bottom:20px;">
				<i class="icon-spinner small" role="img" aria-label="Please wait while upload is in progress"></i>
				Blueprint <span style="font-weight: bolder;background: aqua;">{{ecdapp.serviceType.typeName}}</span> upload is in progress... 
			</div>
		</div>
		<form name="updateForm">
		<div class="row-nowrap" style="margin-top:-20px;">
			<div class="span4 form-row">
				<label for="appl">Application</label>
				<div class="field-group">
				<input id="appl" class="span12" type="text" disabled="disabled" data-ng-model="ecdapp.serviceType.application"/>
				</div>
			</div>
			<div class="span4 form-row">
				<label for="comp">Component</label>
				<div class="field-group">
				<input id="comp" class="span12" type="text" disabled="disabled" data-ng-model="ecdapp.serviceType.component"/>
				</div>		
			</div>
			<div class="span4 form-row" ng-class="{'error':updateForm.owner.$touched && updateForm.owner.$invalid}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Owner
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Owner - a required input</div>  
                        	<div class="popover-content">
                            	<p>Owner of the blueprint record, is set to the authenticated user ID by default, example: ab1234</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<input type="text" id="owner" name="owner" class="span12" data-ng-model="ecdapp.serviceType.owner" required>
				<div ng-if="updateForm.owner.$touched && updateForm.owner.$invalid" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>	
	        </div>
		</div>
		<div class="row-nowrap">
			<div class="span6 form-row">
				<label class="span12" for="typeName">*Blueprint Name</label>
				<div class="field-group tooltip-onclick"  b2b-tooltip>
					<input type="text" id="typeName" name="typeName" class="span12" data-ng-model="ecdapp.serviceType.typeName" disabled="disabled">
					<button class="reset-field" type="button" aria-label="Reset text field"></button>
					<button id="tooltipButton3" class="btn icon-content-listguide tooltip-element icon-tooltip" data-toggle="button" aria-label="Email help"   aria-describedby="tooltipContent3" >
	            	</button>
	            	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltipContent3">  
	                	<div class="popover-title">Blueprint or Type name - a required input</div>  
	                	<div class="popover-content">
	                    	<p>Blueprint or Service Type name identifying the specific application component function. Each application component can have multiple functions which map to separate blueprints.</p>
	                    	<strong class="hidden-spoken">Double tap to close help message.</strong>
	                	</div>
	            	</div>
	            </div>
	        </div>
	        <div class="span6 form-row">
				<label class="span12" for="typeName">*Blueprint Version</label>
				<div class="field-group tooltip-onclick"  b2b-tooltip>
					<input type="text" id="typeVer" name="typeVer" class="span12" data-ng-model="ecdapp.serviceType.typeVersion" disabled="disabled">
					<button class="reset-field" type="button" aria-label="Reset text field"></button>
					<button id="tooltipButton3" class="btn icon-content-listguide tooltip-element icon-tooltip" data-toggle="button" aria-label="Email help"   aria-describedby="tooltipContent4" >
	            	</button>
	            	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltipContent4">  
	                	<div class="popover-title">Blueprint or Type version - a required input</div>  
	                	<div class="popover-content">
	                    	<p>Blueprint or Service Type version may be used to identify the blueprint or package release version.</p>
	                    	<strong class="hidden-spoken">Double tap to close help message.</strong>
	                	</div>
	            	</div>
	            </div>
	        </div>
		</div>					
		<div class="row-nowrap">
			<div class="span12 form-row" ng-class="{'error':updateForm.bpTemplate.$touched && updateForm.bpTemplate.$invalid}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext2" >
                	*Blueprint Template
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext2">  
                        	<div class="popover-title">Blueprint template in YAML format - a required input</div>  
                        	<div class="popover-content">
                            	<p>Blueprint YAML file read from inventory. Edit if required to make updates.</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<textarea id="bpTemplate" name="bpTemplate"class="span12" rows="15" data-ng-model="ecdapp.serviceType.blueprintTemplate" wrap="off" required>
				</textarea>
				<div ng-if="updateForm.bpTemplate.$touched && updateForm.bpTemplate.$invalid" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>
			</div>
		</div>
		<div ng-show="ecdapp.updateInProgress" class="row-nowrap">
			<div class="span" style="margin-bottom:20px;">
    		<i class="icon-spinner small" role="img" aria-label="Please wait while upload is in progress"></i>
	    	Blueprint <span style="font-weight: bolder;background: aqua;">{{ecdapp.serviceType.typeName}}</span> upload is in progress... 
			</div>
		</div>
		</form>
	</div>

	<div class="b2b-modal-footer ng-scope ng-isolate-scope">
		<div class="cta-button-group in">
			<button class="btn btn-alt btn-small" type="submit" ng-disabled="updateForm.$invalid"
					ng-click="ecdapp.updateBlueprint(ecdapp.serviceType);">
				Save
			</button>
			<button class="btn btn-small" type="button"
				ng-click="$dismiss('cancel')">
				Cancel
			</button>
		</div>
	</div>
	
</script>

<script type="text/ng-template"
	id="inventory_blueprint_upload_popup.html">

	<style>
	.ecd-parameter-table
	{
	    border:   1px;
    	overflow: auto;
	}
	.ecd-parameter-table th
	{
		font-size: 1.4rem;
	}
	select
	{
		-webkit-appearance: menulist;
		-moz-appearance: menulist;
	}
	</style>
	
	<div class="b2b-modal-header ng-scope">
		<h2 id="myModalLabel" modal-title="">{{ecdapp.label}}</h2>
		<div class="corner-button in">
			<button type="button" class="close" aria-label="Close"
				ng-click="$dismiss('cancel')"></button>
		</div>
	</div>

	<div class="b2b-modal-body ng-scope ng-isolate-scope" tabindex="0"
		role="region" aria-label="Modal body content">
		<div ng-show="ecdapp.uploadInProgress" class="row-nowrap">
			<div class="span" style="margin-bottom:20px;">
				<i class="icon-spinner small" role="img" aria-label="Please wait while upload is in progress"></i>
				Blueprint <span style="font-weight: bolder;background: aqua;">{{ecdapp.serviceTypeRequest.typeName}}</span> upload is in progress... 
			</div>
		</div>
		
		<div class="row-nowrap" style="margin-bottom: 10px;">
        	<label for="checkbox1" class="checkbox">
                    <input id="checkbox1" type="checkbox" ng-click="ecdapp.handleImportCb($event)"><i class="skin"></i><span>Import Data</span>
            </label>
			<span class="tooltip" b2b-tooltip>
				<a href="#" class="icon-tooltip tooltip-element" tabindex="0" role="button" data-placement="bottom" aria-label="Help" aria-describedby="tooltiptextRadio" >
					<span class="arrow"></span>
				</a>
				<span class="tooltip-wrapper">
					<span class="tooltip-size-control">
						<span id="tooltiptextRadio" role="tooltip" aria-live="polite" aria-hidden="true" class="helpertext" tabindex="-1">  
							<span class="popover-title">Import blueprint data</span>  
							<span class="popover-content">
								<span>Enable the option to import FORM data from local file system. Blueprint import file can be made readily available by exporting a record from application blueprints table.</span>
								<strong class="hidden-spoken hidden-desktop">Double tap to close help message.</strong>
							</span>
						</span>
					</span>
				</span>
			</span>
			<div ng-show="ecdapp.isImport" style="height: 40px; margin-left: 60px;" b2b-file-drop file-model="ecdapp.serviceTypeRequest.fileModel" on-drop="ecdapp.handleImportFile()" align="center" required>
				<span b2b-file-link file-model="ecdapp.serviceTypeRequest.fileModel" on-file-select="ecdapp.handleImportFile()" >
				Drag &amp; drop or click to browse Blueprint data file
   			</span>
			</div>
		</div>
		<form name="uploadForm">
		<div class="row-nowrap" style="margin-top:-20px;" ng-show="ecdapp.isImport">
			<div class="span3 form-row" ng-class="{'error':uploadForm.appl.$touched && !ecdapp.validAppl}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Application
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Application - a required input</div>  
                        	<div class="popover-content">
                            	<p>EOM controller application name. Select an application from the dropdown menu.</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<div class="field-group">
					<input id="appl2" class="span12" type="text" data-ng-model="ecdapp.serviceTypeRequest.application"/>
				</div>
				<div ng-if="uploadForm.appl.$touched && !ecdapp.validAppl" id="applDropdown" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>
				<div ng-show="uploadForm.$submitted" role="alert" class="error-msg" aria-live="polite" aria-atomic="true">
					<div ng-show="uploadForm.appl.$error.required">
					<i class="icon-badgealert" aria-hidden="true"></i>
					<span>Error: Required field.</span>
					</div>
				</div>
			</div>
			<div class="span3 form-row" ng-class="{'error':uploadForm.comp.$touched && !ecdapp.validComp}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Component/Namespace
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Component - a required input</div>  
                        	<div class="popover-content">
                            	<p>Display name of the Component. Component dropdown menu depends on application menu. Component is part of application namespace defined in AAF. If the component is not in the list then add it by using the FORM below.</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<div class="field-group">
				<input id="comp2" class="span12" type="text" data-ng-model="ecdapp.serviceTypeRequest.component"/>
				</div>
				<div ng-if="uploadForm.comp.$touched && !ecdapp.validComp" id="compDropdown" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>				
			</div>
			<div class="span3 form-row" ng-class="{'error':uploadForm.owner.$touched && uploadForm.owner.$invalid}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Owner
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Owner - a required input</div>  
                        	<div class="popover-content">
                            	<p>Owner of the blueprint record, is set to the authenticated user ID by default, example: ab1234</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<input type="text" id="owner2" name="owner" class="span12" data-ng-model="ecdapp.serviceTypeRequest.owner" required>
				<div ng-if="uploadForm.owner.$touched && uploadForm.owner.$invalid" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>	
	        </div>
		</div>
		<div class="row-nowrap" style="margin-top:-20px;" ng-hide="ecdapp.isImport">
			<div class="span3 form-row" ng-class="{'error':uploadForm.appl.$touched && !ecdapp.validAppl}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Application
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Application - a required input</div>  
                        	<div class="popover-content">
                            	<p>EOM controller application name. Select an application from the dropdown menu.</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<div class="field-group">
				<select id="appl" name="appl" b2b-dropdown placeholder-text="Select Application" class="span8" data-ng-model="ecdapp.serviceTypeRequest.application" ng-change="ecdapp.selectAppComp(ecdapp.serviceTypeRequest.application)" required>
					<option b2b-dropdown-list option-repeat="d in ecdapp.apps" value="{{d}}">{{d}}</option>
				</select>
				</div>
				<div ng-if="uploadForm.appl.$touched && !ecdapp.validAppl" id="applDropdown" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>
				<div ng-show="uploadForm.$submitted" role="alert" class="error-msg" aria-live="polite" aria-atomic="true">
					<div ng-show="uploadForm.appl.$error.required">
					<i class="icon-badgealert" aria-hidden="true"></i>
					<span>Error: Required field.</span>
					</div>
				</div>
			</div>
			<div class="span3 form-row" ng-class="{'error':uploadForm.comp.$touched && !ecdapp.validComp}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Component/Namespace
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Component - a required input</div>  
                        	<div class="popover-content">
                            	<p>Display name of the Component. Component dropdown menu depends on application menu. Component is part of application namespace defined in AAF. If the component is not in the list then add it by using the FORM below.</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<div class="field-group">
				<select b2b-dropdown name="comp" class="span8" placeholder-text="Select Component" data-ng-model="ecdapp.serviceTypeRequest.component" ng-change="ecdapp.validateComp()" ng-disabled="!ecdapp.validAppl" required>
					<option b2b-dropdown-list option-repeat="d in ecdapp.comps" value="{{d.cname}}">{{d.dname}}</option>
				</select>
				</div>
				<div ng-if="uploadForm.comp.$touched && !ecdapp.validComp" id="compDropdown" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>				
			</div>
			<div class="span1 form-row">
	        	<label></label>
	        	<div class="field-group span2" ng-click="ecdapp.enableAddApp();">
				<a href="" title="Display add component FORM" class="icon-arrows-vertical-arrow-down ecd-icon-action"></a>
				</div>
			</div> 
			<div class="span3 form-row" ng-class="{'error':uploadForm.owner.$touched && uploadForm.owner.$invalid}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Owner
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Owner - a required input</div>  
                        	<div class="popover-content">
                            	<p>Owner of the blueprint record, is set to the authenticated user ID by default, example: ab1234</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<input type="text" id="owner" name="owner" class="span12" data-ng-model="ecdapp.serviceTypeRequest.owner" placeholder="Example: ab1234" required>
				<div ng-if="uploadForm.owner.$touched && uploadForm.owner.$invalid" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>	
	        </div>
		</div>
		<div class="row-nowrap" ng-hide="ecdapp.isImport">
			<div id="addAppDiv" class="span12 row-nowrap" ng-show="ecdapp.enableAppForm">
			<div class="span4 form-row">
				<label>*Component Name</label>
				<div class="field-group tooltip-onclick"  b2b-tooltip>
					<input type="text" class="span12" data-ng-model="ecdapp.newCompName" placeholder="Example: scheduler">
					<button class="reset-field" type="button" aria-label="Reset text field"></button>
					<button id="tooltipButton1" class="btn icon-tooltip tooltip-element" data-toggle="button" aria-label="Comp Name"   aria-describedby="tooltipContent1" >
	            	</button>
	            	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltipContent1">  
	                	<div class="popover-title">Component name - a required input</div>  
	                	<div class="popover-content">
	                    	<p>Component name is a sub-string of the application namespace in AAF. A non-admin user should only add a new component if that user's role belongs to the component namespace.</p>
	                    	<strong class="hidden-spoken">Double tap to close help message.</strong>
	                	</div>
	            	</div>
	            </div>
	        </div>
			<div class="span4 form-row">
				<label>*Component Display Name</label>
				<div class="field-group tooltip-onclick"  b2b-tooltip>
					<input type="text" class="span12" data-ng-model="ecdapp.newCompDisplayName" placeholder="Example: ECOMP SCHEDULER" style="text-transform:uppercase">
					<button class="reset-field" type="button" aria-label="Reset text field"></button>
					<button id="tooltipButton2" class="btn icon-tooltip tooltip-element" data-toggle="button" aria-label="Email help"   aria-describedby="tooltipContent2" >
	            	</button>
	            	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltipContent2">  
	                	<div class="popover-title">Component Display Name - a required input</div>  
	                	<div class="popover-content">
	                    	<p>Component display name in selection menu</p>
	                    	<strong class="hidden-spoken">Double tap to close help message.</strong>
	                	</div>
	            	</div>
	            </div>
	        </div>
	        <div class="span1 form-row">
	        	<label></label>
	        	<div class="field-group" ng-click="ecdapp.addApplication(ecdapp.serviceTypeRequest.application, ecdapp.newCompId, 
	        	ecdapp.newCompName, ecdapp.newCompDisplayName);">
				<a href="" title="Add Component" class="icon-arrows-quick-sync ecd-icon-action"></a>
				</div>
			</div> 
			</div>      
		</div>
		<div class="row-nowrap">
			<div class="span6 form-row" ng-class="{'error':uploadForm.typeName.$touched && uploadForm.typeName.$invalid}">
				<label class="span12" for="typeName">*Blueprint Name</label>
				<div class="field-group tooltip-onclick"  b2b-tooltip>
					<input type="text" id="typeName" name="typeName" class="span12" data-ng-model="ecdapp.serviceTypeRequest.typeName" placeholder="Example: mso_helm_chart" required>
					<button class="reset-field" type="button" aria-label="Reset text field"></button>
					<button id="tooltipButton3" class="btn icon-tooltip tooltip-element" data-toggle="button" aria-label="Email help"   aria-describedby="tooltipContent3" >
	            	</button>
	            	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltipContent3">  
	                	<div class="popover-title">Blueprint or Type name - a required input</div>  
	                	<div class="popover-content">
	                    	<p>Blueprint or Service Type name identifying the specific application component function. Each application component can have multiple functions which map to separate blueprints.</p>
	                    	<strong class="hidden-spoken">Double tap to close help message.</strong>
	                	</div>
	            	</div>
	            </div>
				<div ng-if="uploadForm.typeName.$touched && uploadForm.typeName.$invalid" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>
	        </div>
	        <div class="span6 form-row" ng-class="{'error':uploadForm.typeVer.$touched && uploadForm.typeVer.$invalid}">
				<label class="span12" for="typeName">*Blueprint Version</label>
				<div class="field-group tooltip-onclick"  b2b-tooltip>
					<input type="text" id="typeVer" name="typeVer" class="span12" data-ng-model="ecdapp.serviceTypeRequest.typeVersion" placeholder="Example: 181017" required>
					<button class="reset-field" type="button" aria-label="Reset text field"></button>
					<button id="tooltipButton3" class="btn icon-tooltip tooltip-element" data-toggle="button" aria-label="Email help"   aria-describedby="tooltipContent4" >
	            	</button>
	            	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltipContent4">  
	                	<div class="popover-title">Blueprint or Type version - a required input</div>  
	                	<div class="popover-content">
	                    	<p>Blueprint or Service Type version may be an integer, example: 10, 181017 or a semantic version string, example: 1902.01.03. Semantic version string is converted to an integer by removing "...", before inserting into inventory. This field is used to identify the blueprint template version or a component package version.</p>
	                    	<strong class="hidden-spoken">Double tap to close help message.</strong>
	                	</div>
	            	</div>
	            </div>
				<div ng-if="uploadForm.typeVer.$touched && uploadForm.typeVer.$invalid" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>
	        </div>
		</div>					
		<div class="row-nowrap">
			<div class="span12 form-row" ng-class="{'error':uploadForm.bpTemplate.$touched && uploadForm.bpTemplate.$invalid}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext2" >
                	*Blueprint Template
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext2">  
                        	<div class="popover-title">Blueprint template in YAML format - a required input</div>  
                        	<div class="popover-content">
                            	<p>Drag and Drop a blueprint YAML file OR click to browse blueprint YAML file</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
   				<div b2b-file-drop file-model="ecdapp.serviceTypeRequest.fileModel" on-drop="handleFileSelect()" align="center" required>
    			<span b2b-file-link file-model="ecdapp.serviceTypeRequest.fileModel" on-file-select="handleFileSelect()" >
    			Drag &amp; drop a blueprint YAML file here, or click to browse.
   				</span>
				</div>
				<textarea id="bpTemplate" name="bpTemplate"class="span12" rows="15" data-ng-model="ecdapp.serviceTypeRequest.blueprintTemplate" wrap="off" required>
				</textarea>
				<div ng-if="uploadForm.bpTemplate.$touched && uploadForm.bpTemplate.$invalid" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>
			</div>
		</div>
		<div ng-show="ecdapp.uploadInProgress" class="row-nowrap">
			<div class="span" style="margin-bottom:20px;">
    		<i class="icon-spinner small" role="img" aria-label="Please wait while upload is in progress"></i>
	    	Blueprint <span style="font-weight: bolder;background: aqua;">{{ecdapp.serviceTypeRequest.typeName}}</span> upload is in progress... 
			</div>
		</div>
		</form>
	</div>

	<div class="b2b-modal-footer ng-scope ng-isolate-scope">
		<div class="cta-button-group in">
			<button class="btn btn-alt btn-small" type="submit" ng-disabled="uploadForm.$invalid || !ecdapp.validAppl || !ecdapp.validComp"
					ng-click="ecdapp.uploadBlueprint(ecdapp.serviceTypeRequest);">
				Save
			</button>
			<button class="btn btn-small" type="button"
				ng-click="$dismiss('cancel')">
				Cancel
			</button>
		</div>
	</div>
</script>

<script type="text/ng-template" id="inventory_blueprint_view_popup.html">

	<div class="b2b-modal-header ng-scope">
		<h2 id="myModalLabel" modal-title="">{{ecdapp.label}}</h2>
		<div class="corner-button in">
			<button type="button" class="close" aria-label="Close"
				ng-click="$dismiss('cancel')"></button>
		</div>
	</div>

	<div class="b2b-modal-body ng-scope ng-isolate-scope" tabindex="0"
		role="region" aria-label="Modal body content">

	 	<!-- show progress indicator -->
		<div ng-show="ecdapp.isDataLoading">
			<div class="span" style="margin-bottom:20px;">
    			<i class="icon-spinner small" role="img" aria-label="Please wait while the content loads"></i>
	    		Please wait while the content loads.
	    	</div>
		</div>

		<div ng-show="ecdapp.errMsg">
			<span class="ecd-error-message">{{ecdapp.errMsg}}</span>
		</div>
	
		<div ng-hide="ecdapp.errMsg">
			<pre>{{ecdapp.blueprint}}</pre>
		</div>

	</div>

	<div class="b2b-modal-footer ng-scope ng-isolate-scope">
		<div class="cta-button-group in">
			<button class="btn btn-alt btn-small" type="button"
					ng-click="$dismiss('cancel');">
				Close
			</button>
		</div>
	</div>

</script>

<script type="text/ng-template"
	id="inventory_blueprint_deploy_popup.html">

	<style>
	.ecd-parameter-table
	{
	    border:   1px;
    	overflow: auto;
	}
	.ecd-parameter-table th 
	{
		font-size: 1.4rem;
	}

	</style>

	<div class="b2b-modal-header ng-scope">
		<h2 id="myModalLabel" modal-title="">{{ecdapp.label}}</h2>
		<div ng-hide="ecdapp.deploymentInProgress" class="corner-button in">
			<button type="button" class="close" aria-label="Close"
				ng-click="$dismiss('cancel')"></button>
		</div>
	</div>

	<div class="b2b-modal-body ng-scope ng-isolate-scope" tabindex="0"
		role="region" aria-label="Modal body content">

		<div ng-show="ecdapp.deploymentInProgress" class="row-nowrap">
			<div class="span" style="margin-bottom:20px;">
    			<i class="icon-spinner small" role="img" aria-label="Please wait while the content loads"></i>
	    		Deployment <span style="font-weight: bolder;background: aqua;">{{ecdapp.editRequest.component}}_{{ecdapp.editRequest.tag}}</span> to tenant <span style="font-weight: bolder;background: aqua;">{{ecdapp.editRequest.tenant}}</span> is in progress... execution status will display shortly
	    	</div>
		</div>

 		<form name="deployForm">
		<div ng-hide="ecdapp.deploymentInProgress" class="row-nowrap" style="margin-top:-20px;">
			<div class="span4 form-row">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Component
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Component - a required field</div>  
                        	<div class="popover-content">
                            	<p>Value is set to the component name that blueprint belongs. Component name is a sub-string of the application namespace in AAF. User role is associated with that same namespace.</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<!--<label for="blueprintFileName">*Component</label> -->
				<input id="blueprintComponent" class="span12" disabled="disabled" type="text" data-ng-model="ecdapp.editRequest.component" autofocus>
				</input>
			</div>
			<div class="span4 form-row" ng-class="{'error':deployForm.tag.$touched && deployForm.tag.$invalid}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Deployment Tag
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Deployment Tag - a required input</div>  
                        	<div class="popover-content">
                            	<p>Default value set to the blueprint name. An editable field for the deployment reference, can be used to identify the purpose of the deployment. Deployment ID [<component>_<deployment tag>] is generated from component and deployment tag fields.</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
					</div>
				</div>
				<input id="tag" name="tag" class="span12" type="text" data-ng-model="ecdapp.editRequest.tag" required/>
				<div ng-if="deployForm.tag.$touched && deployForm.tag.$invalid" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>
				<div ng-show="deployForm.$submitted">
					<div ng-show="deployForm.tag.$error.required">
					    <i class="icon-badgealert" aria-hidden="true"></i>
						<span>Error: Required field.</span>
					</div>
				</div>
			</div> 
			<div class="span4 form-row" ng-class="{'error':deployForm.tenant.$touched && !ecdapp.validTenant}">
				<div class="tooltip" b2b-tooltip trigger="focus">
            		<a  href="javascript:void(0)" class="tooltip-element" data-placement="bottom" role="button" aria-label="Help"  aria-describedby="tooltiptext1" >
                	*Cloudify Tenants
                	<div class="arrow"></div>
            		</a>
	            	<div class="tooltip-wrapper" role="tooltip" aria-live="polite" aria-atomic="false" style="z-index:1111">
                	<div class="tooltip-size-control">
                    	<div class="helpertext" tabindex="-1" role="tooltip" id="tooltiptext1">  
                        	<div class="popover-title">Tenant name - a required input</div>  
                        	<div class="popover-content">
                            	<p>Values are shown in a dropdown. Tenant information is obtained from Cloudify. Tenant selection is required to begin deployment.</p>
                            	<strong class="hidden-spoken">Double tap to close help message.</strong>
                        	</div>
                    	</div>
                	</div>
            		</div>
				</div>
				<select id="cldTenants" name="tenant" b2b-dropdown placeholder-text="Select Tenant" class="span8" data-ng-model="ecdapp.editRequest.tenant" ng-change="ecdapp.validateTenant()">
					<option b2b-dropdown-list option-repeat="d in tenantList.data" value="{{d.name}}">{{d.name}}</option>
				</select>
            	<div ng-if="deployForm.tenant.$touched && !ecdapp.validTenant" id="tenantDropdown" role="alert" class="error-msg" aria-live="polite" aria-atomic="true" >
                  <i class="icon-badgealert" aria-hidden="true"></i>
                  <span>Error: Required field.</span>
            	</div>
			</div>
		</div>

		<div ng-hide="ecdapp.deploymentInProgress" class="row-nowrap">
			<div class="span6">
			<span style="font-weight: bolder;background: aquamarine;">Deployment ID: {{ecdapp.editRequest.component}}_{{ecdapp.editRequest.tag}}</span>
			</div>
		</div>
		<div ng-show="ecdapp.errMsg">
			<span class="ecd-error-message">{{ecdapp.errMsg}}</span>
		</div>
	 	<!-- show progress indicator -->
		<div ng-show="ecdapp.isDataLoading">
			<div class="span" style="margin-bottom:20px;">
    			<i class="icon-spinner small" role="img" aria-label="Operation in progress"></i>
	    		Operation in progress.
	    	</div>
		</div>

		<div ng-hide="ecdapp.deploymentInProgress" class="row-nowrap">
			<div class="span12">
				<div class="form-row">
					<label for="parameters">*Parameters</label>
   					<div b2b-file-drop file-model="ecdapp.editRequest.fileModel" on-drop="handleFileSelect()" align="center">
    						<span b2b-file-link file-model="ecdapp.editRequest.fileModel" on-file-select="handleFileSelect()" >
    						Drag &amp; drop a parameters JSON file here, or click to browse.
   							</span>
			        </div>
		        </div>
				<div class="ecd-parameter-table">
					<table id="parameters">
						<tr id="ecd-table-header">
							<th width="60%">Name</th>
							<th width="40%">Value</th>
						</tr>
	            		<tbody ng-repeat="(pkey, pval) in ecdapp.editRequest.parmFileDict">
							<tr id="tr-rowData">
								<td ng-bind="pkey"/>
								<td><input id="parameterValue" class="span12" type="text" data-ng-model="ecdapp.editRequest.parmFileDict[pkey]" autofocus/></td>
							</tr>
						</tbody>
					</table>
				</div>
			</div>
		</div>
	</form>
	</div>

	<div class="b2b-modal-footer ng-scope ng-isolate-scope">
		<div ng-hide="ecdapp.deploymentInProgress" class="cta-button-group in">
			<button class="btn btn-alt btn-small" type="submit" ng-disabled="deployForm.$invalid || !ecdapp.validTenant"
					ng-click="ecdapp.deployBlueprint(ecdapp.editRequest);">
				Deploy
			</button>
			<button class="btn btn-small" type="button"
				ng-click="$dismiss('cancel')">
				Cancel
			</button>
		</div>
	</div>

</script>