--- /dev/null
+[run]
+omit = opnfv_testapi/tests/*
+[report]
+exclude_lines =
+ pass
+ main()
--- /dev/null
+{
+ "ignore": [
+ "order-alphabetical",
+ "zero-units",
+ "box-model",
+ "adjoining-classes",
+ "ids",
+ "important",
+ "floats",
+ "unique-headings",
+ "qualified-headings",
+ "outline-none",
+ "overqualified-elements",
+ "font-sizes",
+ "universal-selector",
+ "box-sizing",
+ "text-indent",
+ "regex-selectors",
+ "gradients",
+ "fallback-colors"
+ ]
+}
--- /dev/null
+{
+ "plugins": [], // npm modules to load
+
+ "maxerr": false,
+ "raw-ignore-regex": false,
+ "attr-bans": [
+ "align",
+ "background",
+ "bgcolor",
+ "border",
+ "frameborder",
+ "longdesc",
+ "marginwidth",
+ "marginheight",
+ "scrolling",
+ "width"
+ ],
+ "indent-delta": false,
+ "indent-style": "spaces",
+ "indent-width": 2,
+ "indent-width-cont": true,
+ "spec-char-escape": false,
+ "text-ignore-regex": false,
+ "tag-bans": [
+ "b"
+ ],
+ "tag-close": true,
+ "tag-name-lowercase": true,
+ "tag-name-match": true,
+ "tag-self-close": "never",
+ "doctype-first": "smart",
+ "doctype-html5": true,
+ "attr-name-style": "dash",
+ "attr-name-ignore-regex": false,
+ "attr-no-dup": true,
+ "attr-no-unsafe-char": true,
+ "attr-order": false,
+ "attr-quote-style": false,
+ "attr-req-value": false,
+ "attr-new-line": false,
+ "attr-validate": false,
+ "id-no-dup": true,
+ "id-class-no-ad": false,
+ "id-class-style": false,
+ "class-no-dup": true,
+ "class-style": false,
+ "id-class-ignore-regex": false,
+ "img-req-alt": true,
+ "img-req-src": false,
+ "html-valid-content-model": true,
+ "head-valid-content-model": true,
+ "href-style": false,
+ "label-req-for": false,
+ "line-end-style": "lf",
+ "line-no-trailing-whitespace": true,
+ "line-max-len": 240,
+ "line-max-len-ignore-regex": false,
+ "head-req-title": true,
+ "title-no-dup": true,
+ "title-max-len": 70,
+ "html-req-lang": false,
+ "lang-style": "case",
+ "fig-req-figcaption": false,
+ "focusable-tabindex-style": false,
+ "input-radio-req-name": true,
+ "input-req-label": false,
+ "table-req-caption": false,
+ "table-req-header": false
+}
+++ /dev/null
-/*
-
-Original style from softwaremaniacs.org (c) Ivan Sagalaev <Maniac@SoftwareManiacs.Org>
-
-*/
-
-pre code {
- display: block; padding: 0.5em;
- background: #F0F0F0;
-}
-
-pre code,
-pre .subst,
-pre .tag .title,
-pre .lisp .title,
-pre .clojure .built_in,
-pre .nginx .title {
- color: black;
-}
-
-pre .string,
-pre .title,
-pre .constant,
-pre .parent,
-pre .tag .value,
-pre .rules .value,
-pre .rules .value .number,
-pre .preprocessor,
-pre .ruby .symbol,
-pre .ruby .symbol .string,
-pre .aggregate,
-pre .template_tag,
-pre .django .variable,
-pre .smalltalk .class,
-pre .addition,
-pre .flow,
-pre .stream,
-pre .bash .variable,
-pre .apache .tag,
-pre .apache .cbracket,
-pre .tex .command,
-pre .tex .special,
-pre .erlang_repl .function_or_atom,
-pre .markdown .header {
- color: #800;
-}
-
-pre .comment,
-pre .annotation,
-pre .template_comment,
-pre .diff .header,
-pre .chunk,
-pre .markdown .blockquote {
- color: #888;
-}
-
-pre .number,
-pre .date,
-pre .regexp,
-pre .literal,
-pre .smalltalk .symbol,
-pre .smalltalk .char,
-pre .go .constant,
-pre .change,
-pre .markdown .bullet,
-pre .markdown .link_url {
- color: #080;
-}
-
-pre .label,
-pre .javadoc,
-pre .ruby .string,
-pre .decorator,
-pre .filter .argument,
-pre .localvars,
-pre .array,
-pre .attr_selector,
-pre .important,
-pre .pseudo,
-pre .pi,
-pre .doctype,
-pre .deletion,
-pre .envvar,
-pre .shebang,
-pre .apache .sqbracket,
-pre .nginx .built_in,
-pre .tex .formula,
-pre .erlang_repl .reserved,
-pre .prompt,
-pre .markdown .link_label,
-pre .vhdl .attribute,
-pre .clojure .attribute,
-pre .coffeescript .property {
- color: #88F
-}
-
-pre .keyword,
-pre .id,
-pre .phpdoc,
-pre .title,
-pre .built_in,
-pre .aggregate,
-pre .css .tag,
-pre .javadoctag,
-pre .phpdoc,
-pre .yardoctag,
-pre .smalltalk .class,
-pre .winutils,
-pre .bash .variable,
-pre .apache .tag,
-pre .go .typename,
-pre .tex .command,
-pre .markdown .strong,
-pre .request,
-pre .status {
- font-weight: bold;
-}
-
-pre .markdown .emphasis {
- font-style: italic;
-}
-
-pre .nginx .built_in {
- font-weight: normal;
-}
-
-pre .coffeescript .javascript,
-pre .javascript .xml,
-pre .tex .formula,
-pre .xml .javascript,
-pre .xml .vbscript,
-pre .xml .css,
-pre .xml .cdata {
- opacity: 0.5;
-}
color: black;
}
.title {
- font-style: bold;
+ font-weight: bold;
}
.secondary_form {
display: none;
<html>
<head>
<title>Swagger UI</title>
- <link href='https://fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'/>
- <link href='css/highlight.default.css' media='screen' rel='stylesheet' type='text/css'/>
- <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
+ <link href='https://fonts.googleapis.com/css?family=Droid+Sans:400,700' rel='stylesheet' type='text/css'>
+ <link href='css/highlight.default.css' media='screen' rel='stylesheet' type='text/css'>
+ <link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'>
<script type="text/javascript" src="lib/shred.bundle.js"></script>
<script src='lib/jquery-1.8.0.min.js' type='text/javascript'></script>
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
<a id="logo" href="http://swagger.wordnik.com">swagger</a>
<form id='api_selector'>
<div class='input icon-btn'>
- <img id="show-pet-store-icon" src="images/pet_store_api.png" title="Show Swagger Petstore Example Apis">
+ <img id="show-pet-store-icon" src="images/pet_store_api.png" title="Show Swagger Petstore Example Apis" alt="Petstore">
</div>
<div class='input icon-btn'>
- <img id="show-wordnik-dev-icon" src="images/wordnik_api.png" title="Show Wordnik Developer Apis">
+ <img id="show-wordnik-dev-icon" src="images/wordnik_api.png" title="Show Wordnik Developer Apis" alt="Wordnik">
</div>
- <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>
- <div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>
+ <div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"></div>
+ <div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"></div>
<div class='input'><a id="explore" href="#">Explore</a></div>
</form>
</div>
):{}
window.opener.onOAuthComplete(qp);
window.close();
-</script>
\ No newline at end of file
+</script>
\r
.ascend .nectar-progress-bar .bar-wrap,\r
.ascend .nectar-progress-bar span {\r
- box-shadow: none;\r
-webkit-box-shadow: none;\r
-o-box-shadow: none;\r
- border-radius: 0;\r
+ box-shadow: none;\r
-webkit-border-radius: 0;\r
-o-border-radius: 0;\r
+ border-radius: 0;\r
}\r
\r
body .carousel-wrap[data-full-width="false"] .control-wrap {\r
}\r
\r
#search-outer #search #close a:hover {\r
- transform: rotate(90deg) translateZ(0);\r
+ -ms-transform: rotate(90deg) translateZ(0);\r
-webkit-transform: rotate(90deg) translateZ(0);\r
+ transform: rotate(90deg) translateZ(0);\r
}\r
\r
#search-outer #search .span_12 span {\r
\r
.ascend .col.boxed,\r
.ascend .wpb_column.boxed {\r
- box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r
-webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r
-moz-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r
-o-box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r
+ box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1);\r
background-color: #fff;\r
padding: 25px 15px 15px;\r
position: relative;\r
\r
.ascend .col.boxed:hover,\r
.ascend .wpb_column.boxed:hover {\r
- transform: translateY(-4px) !important;\r
+ -ms-transform: translateY(-4px) !important;\r
-webkit-transform: translateY(-4px) !important;\r
- box-shadow: 0 17px 25px rgba(0, 0, 0, 0.13) !important;\r
+ transform: translateY(-4px) !important;\r
-webkit-box-shadow: 0 17px 25px rgba(0, 0, 0, 0.13);\r
-moz-box-shadow: 0 17px 25px rgba(0, 0, 0, 0.13);\r
-o-box-shadow: 0 17px 25px rgba(0, 0, 0, 0.13);\r
+ box-shadow: 0 17px 25px rgba(0, 0, 0, 0.13) !important;\r
}\r
\r
.ascend a.pp_arrow_previous,\r
.woocommerce .pswp__button--arrow--right:after,\r
.woocommerce .pswp__button--arrow--left:after {\r
top: 17px;\r
- transform: translateX(-27px);\r
+ -ms-transform: translateX(-27px);\r
-webkit-transform: translateX(-27px);\r
+ transform: translateX(-27px);\r
}\r
\r
.ascend .mfp-arrow-left:after,\r
.mfp-arrow-right:hover:after,\r
.woocommerce .pswp__button--arrow--right:hover:after {\r
opacity: 1;\r
- transform: translateX(-18px);\r
+ -ms-transform: translateX(-18px);\r
-webkit-transform: translateX(-18px);\r
+ transform: translateX(-18px);\r
}\r
\r
.mfp-arrow-right:hover:before,\r
.woocommerce .pswp__button--arrow--right:hover:before {\r
- transform: translateX(9px);\r
+ -ms-transform: translateX(9px);\r
-webkit-transform: translateX(9px);\r
+ transform: translateX(9px);\r
}\r
\r
.mfp-arrow-left:hover:before,\r
.woocommerce .pswp__button--arrow--left:hover:before {\r
- transform: translateX(-9px);\r
+ -ms-transform: translateX(-9px);\r
-webkit-transform: translateX(-9px);\r
+ transform: translateX(-9px);\r
}\r
\r
.mfp-arrow-right:hover:after,\r
.woocommerce .pswp__button--arrow--right:hover:after {\r
- transform: translateX(-1px);\r
+ -ms-transform: translateX(-1px);\r
-webkit-transform: translateX(-1px);\r
+ transform: translateX(-1px);\r
}\r
\r
.ascend a.pp_arrow_next:hover .icon-default-style {\r
- transform: translateX(7px);\r
+ -ms-transform: translateX(7px);\r
-webkit-transform: translateX(7px);\r
+ transform: translateX(7px);\r
}\r
\r
.ascend a.pp_arrow_previous:hover .icon-default-style:after,\r
.mfp-arrow-left:hover:after,\r
.woocommerce .pswp__button--arrow--left:hover:after {\r
opacity: 1;\r
- transform: translateX(-51px);\r
+ -ms-transform: translateX(-51px);\r
-webkit-transform: translateX(-51px);\r
+ transform: translateX(-51px);\r
}\r
\r
.mfp-arrow-left:hover:after,\r
.woocommerce .pswp__button--arrow--left:hover:after {\r
- transform: translateX(-58px);\r
+ -ms-transform: translateX(-58px);\r
-webkit-transform: translateX(-58px);\r
+ transform: translateX(-58px);\r
}\r
\r
.ascend a.pp_arrow_previous:hover .icon-default-style {\r
- transform: translateX(-7px);\r
+ -ms-transform: translateX(-7px);\r
-webkit-transform: translateX(-7px);\r
+ transform: translateX(-7px);\r
}\r
\r
.container-wrap input[type="text"],\r
.container-wrap input[type="date"] {\r
background-color: transparent !important;\r
border: 1px solid #ccc !important;\r
- box-shadow: none !important;\r
-webkit-box-shadow: none !important;\r
- font-size: 16px !important;\r
-o-box-shadow: none !important;\r
+ box-shadow: none !important;\r
+ font-size: 16px !important;\r
padding: 16px !important;\r
}\r
\r
margin: auto;
background-color: #f5f5f5;
-webkit-border-radius: 3px;
+ border-radius: 3px;
border: 1px solid #d8d8d8;
border-top: 1px solid #bcbcbc;
}
.tabs li a {
margin: 0px;
display: inline-block;
- text-align: left;
color: #41728d;
font-size: 13px;
font-family: 'PT Sans', serif;
text-decoration: none;
font-size: 14px;
line-height: 3em;
- background: #ddd;
- box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
-moz-box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
+ box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.5);
text-shadow: #fff 0px 1px 1px;
background: -webkit-gradient(linear, left top, left bottom, from(#eeeeee), to(#bebebe));
- filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#bebebe');
+ background: #ddd;
}
a.button:hover {
}
a.button:active {
- background: #ababab;
- box-shadow: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
+ box-shadow: none;
border-color: #ababab;
border-top-color: #636363;
+ background: #ababab;
background: -webkit-gradient(linear, left top, left bottom, from(#bebebe), to(#dddddd));
-webkit-transition: none;
padding: 4px 29px 2px 31px !important;
/* firefox */
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #FFFFFF), color-stop(50%, #F3F3F3), color-stop(100%, #EBEBEB));
/* webkit */
- filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#FFFFFF', endColorstr='#EBEBEB',GradientType=0 );
- /* ie */
- box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
-webkit-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2);
-moz-box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.2);
+ box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.5);
text-shadow: #fff 0px 1px 1px;
- border-radius: 3px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
+ border-radius: 3px;
border-bottom-color: #a0a0a0;
border-right-color: #bababa;
border-left-color: #bababa;
a.roundedButton:active,
input.action:active {
- background: #ababab;
- box-shadow: none;
-webkit-box-shadow: none;
-moz-box-shadow: none;
+ box-shadow: none;
border-color: #ababab;
border-top-color: #636363;
+ background: #ababab;
background: -webkit-gradient(linear, left top, left bottom, from(#bebebe), to(#dddddd));
-webkit-transition: none;
padding: 4px 15px;
padding-right: 7px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
+ border-radius: 3px;
color: #757575;
font-size: 0.7em;
text-decoration: none;
background: rgba(0, 0, 0, 0.8);
padding: 1px 8px;
color: white;
- border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
+ border-radius: 4px;
}
a.Datasheet {
background-color: #e2f1f5;
border: 1px solid #89c6d6;
-webkit-border-radius: 3px;
+ border-radius: 3px;
padding: 2px 8px;
margin-bottom: 5px;
color: #1a4b6b;
.user-photo img {
border: 5px solid white;
-webkit-box-shadow: 3px 2px 2px rgba(0, 0, 0, 0.3);
+ box-shadow: 3px 2px 2px rgba(0, 0, 0, 0.3);
}
.siteMessage {
-webkit-border-radius: 4px;
+ border-radius: 4px;
border: 1px solid;
margin-bottom: 10px;
margin-top: 20px;
.news-section .news-wrapper ul {
margin: 30px 0;
+ -moz-padding-start: 0;
-webkit-padding-start: 0;
}
.footer-links ul {
margin-left: 0;
+ -moz-padding-start: 0;
-webkit-padding-start: 0;
}
@media (max-width: 680px) {
ul.marketplace-nav li {
- display: block;
- float: left;
+ display: table-cell;
border-right: none;
text-align: left;
border-bottom: 1px solid #e8e8e8;
ul.marketplace-nav a span {
display: table-cell;
vertical-align: middle;
- float: left;
}
}
i.mobile-expand {
position: relative;
display: inline-block;
- float: right;
cursor: pointer;
}
.navbar-nav > li.open i.mobile-expand {
position: relative;
display: inline-block;
- float: right;
cursor: pointer;
}
}
#directory_inner tr {
- vertical-align: center;
+ vertical-align: middle;
}
#directory_inner {
}
.company_logo {
- padding-right: 30px;
- padding-left: 20px;
- padding-top: 20px;
- padding-bottom: 20px;
+ padding: 20px 30px 20px 20px;
}
.company_row:hover {
<p>Please note that these sources are subject to further revisions and may be updated at some future time.
The current compliance verification procedures are published by OPNFV.</p>
-<h2>Program Management & Maintenance</h2>
+<h2>Program Management & Maintenance</h2>
-<h3>Role of C&C Committee</h3>
-<p>The OPNFV Certification & Compliance (C&C) Committee, hereafter referred to as the Committee, serves as the CVP
-administrator on behalf of the OPNFV Board of Directors. The Committee is responsible for defining program governance,
-compliance verification strategy, and the overall scope of the compliance verification procedures.</p>
+<h3>Role of C&C Committee</h3>
+<p>The OPNFV Certification & Compliance (C&C) Committee, hereafter referred to as the Committee, serves as the
+CVP administrator on behalf of the OPNFV Board of Directors. The Committee is responsible for defining program
+governance, compliance verification strategy, and the overall scope of the compliance verification procedures.</p>
<h3>Maintenance of Program Documents</h3>
<p>Program documents, such as this document, produced by the Committee will be labeled using semantic versioning.
<li>Readiness for commercial deployment</li>
</ul>
</ul>
-<p>The OPNFV C&C Committee on behalf of the Board of Directors can award a product “OPNFV Ready” status. “OPNFV Ready”,
-therefore, may not be used in relation to a vendor’s product without first having met the requirements outlined in this
-document.</p>
+<p>The OPNFV C&C Committee on behalf of the Board of Directors can award a product “OPNFV Ready” status.
+“OPNFV Ready”, therefore, may not be used in relation to a vendor’s product without first having met the requirements
+outlined in this document.</p>
<p>Use of “Ready” must be used in conjunction with the OPNFV release name under which the product was verified
(e.g., “OPNFV Colorado Ready”). This allows the OPNFV compliance/qualification standard to evolve over time as the
OPNFV platform matures.</p>
Logo/Trademark, program documents, or compliance verification procedures.</p>
-<h2>Compliance Verification & Application Requirements</h2>
+<h2>Compliance Verification & Application Requirements</h2>
<h3>Compliance Verification Procedures Requirements</h3>
<p>CVP compliance verification procedures leverage tests, compliance verification tools, test infrastructure and
compliance verification program infrastructure defined and maintained by OPNFV projects which are included in an OPNFV
regarding the approval of the granting of permission to use an OPNFV Logo/Trademark.</p>
<p>The Committee may request additional information regarding the application for use of an OPNFV Logo/Trademark.</p>
<p>OPNFV may charge a reasonable fee for reviewing results. Reviews will be conducted by OPNFV member companies
-participating in the review committee (a C&C subcommittee). No member company may review its own compliance verification
-results.</p>
+participating in the review committee (a C&C subcommittee). No member company may review its own compliance
+verification results.</p>
<p>In the event of a dispute, the submitting organization has a right to appeal the decision with the OPNFV Board of
Directors. An appeals process is documented in the Escalation Process below.</p>
<h3>Similarity Policy</h3>
<p>Hardware platforms identified as similar to platforms that have passed CVP compliance verification procedures may
-apply to use the OPNFV Ready trademark. The C&C Committee can decide to grant “OPNFV Ready” to products designated
+apply to use the OPNFV Ready trademark. The C&C Committee can decide to grant “OPNFV Ready” to products designated
“under similarity”. The Committee will consider similarity in the following areas (for example):</p>
<ul>
<li>Compute</li>
<!DOCTYPE html>
<head>
<meta charset="utf-8">
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Logo Request » OpenStack Open Source Cloud Computing Software</title>
- <link rel="stylesheet" href="testapi-ui/assets/css/combine.css" />
+ <link rel="stylesheet" href="testapi-ui/assets/css/combine.css">
</head>
<body id="logo-request">
<div class="container-fluid common-main-container">
<i uib-tooltip="Organization name" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
<input type="text" class="text form-control" ng-model="ctrl.organization_name" required="required"
- aria-required="true" />
+ aria-required="true">
</div>
</div>
<div class="field text col-md-4">
class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
<input type="text" class="text form-control" ng-model="ctrl.organization_web" required="required"
- aria-required="true" />
+ aria-required="true">
</div>
</div>
<div class="col-md-4"></div>
<i uib-tooltip="Product name and/or identifier" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
<input type="text" class="email text form-control" ng-model="ctrl.product_name" required="required"
- aria-required="true" />
+ aria-required="true">
</div>
</div>
<div class="field text col-md-4">
class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
<input type="text" class="text form-control" ng-model="ctrl.product_spec" required="required"
- aria-required="true" />
+ aria-required="true">
</div>
</div>
<div class="field text col-md-4">
class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
<input type="text" class="text form-control" ng-model="ctrl.product_documentation" required="required"
- aria-required="true" />
+ aria-required="true">
</div>
</div>
<div class="field text col-md-4">
<i uib-tooltip="Primary contact name" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
<input type="text" class="text form-control" ng-model="ctrl.prim_name" required="required"
- aria-required="true" />
+ aria-required="true">
</div>
</div>
<div class="field text col-md-4">
class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
<input type="text" class="text form-control" ng-model="ctrl.prim_email" required="required"
- aria-required="true" />
+ aria-required="true">
</div>
</div>
<div class="field text col-md-4">
<i uib-tooltip="Primary postal address" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
<input type="text" class="text form-control" ng-model="ctrl.prim_address" required="required"
- aria-required="true" />
+ aria-required="true">
</div>
</div>
<div class="field text col-md-4">
<i uib-tooltip="Primary phone number" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
<input type="text" class="text form-control" ng-model="ctrl.prim_phone" required="required"
- aria-required="true" />
+ aria-required="true">
</div>
</div>
<div class="field text col-md-4">
<label class="left">User ID for CVP web portal</label>
<i uib-tooltip="User ID for CVP web portal" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.user_id" />
+ <input type="text" class="text form-control" ng-model="ctrl.user_id">
</div>
</div>
<div class="field text col-md-4">
<label class="left">Description</label>
<i uib-tooltip="Product Description" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.description" />
+ <input type="text" class="text form-control" ng-model="ctrl.description">
</div>
</div>
<div class="field text col-md-4">
<label class="left">SUT Version</label>
<i uib-tooltip="SUT Version" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.sut_version" />
+ <input type="text" class="text form-control" ng-model="ctrl.sut_version">
</div>
</div>
<div class="field text col-md-4">
<i uib-tooltip="SUT HW Version - leave blank if not applicable"
class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.sut_hw_version" />
+ <input type="text" class="text form-control" ng-model="ctrl.sut_hw_version">
</div>
</div>
<div class="field text col-md-4">
<label class="left">OVP Version</label>
<i uib-tooltip="OVP Version" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.ovp_version" />
+ <input type="text" class="text form-control" ng-model="ctrl.ovp_version">
</div>
</div>
<div class="field text col-md-4">
<label class="left">OVP Category</label>
<i uib-tooltip="OVP Category" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.ovp_category" />
+ <input type="text" class="text form-control" ng-model="ctrl.ovp_category">
</div>
</div>
<div class="field text col-md-4">
<label class="left">Company Logo</label>
<i uib-tooltip="Company Logo" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.company_logo" />
+ <input type="text" class="text form-control" ng-model="ctrl.company_logo">
</div>
</div>
<div class="field text col-md-4">
<label class="left">Approve Date</label>
<i uib-tooltip="Approve Date - YYYY-MM-DD" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.approve_date" />
+ <input type="text" class="text form-control" ng-model="ctrl.approve_date">
</div>
</div>
<div class="field text col-md-4">
<label class="left">Approved</label>
<i uib-tooltip="Approved - insert true or false" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.approved" />
+ <input type="text" class="text form-control" ng-model="ctrl.approved">
</div>
</div>
<div class="field text col-md-4">
<i uib-tooltip="Test ID - enter approved test_id"
class="glyphicon glyphicon-question-sign opnfv-blue"></i>
<div class="middleColumn">
- <input type="text" class="text form-control" ng-model="ctrl.test_id" />
+ <input type="text" class="text form-control" ng-model="ctrl.test_id">
</div>
</div>
<div class="field text col-md-4">
<div class="field text col-md-4">
<label class="left">Lab Name</label>
<i uib-tooltip="Lab Name" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
- <input type="text" class="text form-control" ng-model="ctrl.lab_name"/>
+ <input type="text" class="text form-control" ng-model="ctrl.lab_name">
</div>
<div class="field text col-md-4">
<label class="left">Lab Email</label>
<i uib-tooltip="Lab Email" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
- <input type="text" class="text form-control" ng-model="ctrl.lab_email"/>
+ <input type="text" class="text form-control" ng-model="ctrl.lab_email">
</div>
<div class="field text col-md-4">
<label class="left">Lab Address</label>
<i uib-tooltip="Lab Address" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
- <input type="text" class="text form-control" ng-model="ctrl.lab_address"/>
+ <input type="text" class="text form-control" ng-model="ctrl.lab_address">
</div>
<div class="field text col-md-4">
<label class="left">Lab Phone Number</label>
<i uib-tooltip="Lab Phone Number" class="glyphicon glyphicon-question-sign opnfv-blue"></i>
- <input type="text" class="text form-control" ng-model="ctrl.lab_phone"/>
+ <input type="text" class="text form-control" ng-model="ctrl.lab_phone">
</div>
</div>
</fieldset>
<h3>Sign In</h3>
-<b>Please choose your account provider:</b>
+<strong>Please choose your account provider:</strong>
<div class="row">
<div class="col-xs-6 col-md-3">
<a ng-click="auth.doSignIn('cas')" class="thumbnail">
<h3>OPNFV Verified Product Directory</h3>
<div>
<h4>Compliance Marks Granted to {{ctrl.companyID}}</h4>
- <img src="api/v1/cvp/applications/getlogo/{{ctrl.company_logo}}" />
+ <img src="api/v1/cvp/applications/getlogo/{{ctrl.company_logo}}" alt="Company Logo">
<table class="table table-striped table-hover">
<thead>
<tr>
<tbody class="directory_inner" style="overflow: hidden; text-overflow: ellipsis;">
<tr style="vertical-align: center;" ng-repeat="prod in ctrl.directory"
ng-if="prod.organization_name==ctrl.companyID && prod.approved=='true'">
- <td width="250">{{ prod.product_name}}</td>
- <td width="350">{{ prod.description}}</td>
- <td width="150">{{ prod.ovp_category}}</td>
- <td width="150">{{ prod.ovp_version}}</td>
+ <td style="width: 250px;">{{ prod.product_name}}</td>
+ <td style="width: 350px;">{{ prod.description}}</td>
+ <td style="width: 150px;">{{ prod.ovp_category}}</td>
+ <td style="width: 150px;">{{ prod.ovp_version}}</td>
<td><a href="{{ prod.product_documentation}}" target="_blank">{{ prod.product_documentation}}</a></td>
- <td width="150">{{ prod.sut_version}}</td>
- <td width="150">{{ prod.sut_hw_version}}</td>
+ <td style="width: 150px;">{{ prod.sut_version}}</td>
+ <td style="width: 150px;">{{ prod.sut_hw_version}}</td>
</tr>
</tbody>
</table>
</div>
</div>
-<br />
+<br>
<strong>Capability Status:</strong>
<div class="checkbox">
<h4>{{area.area_name}}</h4>
<ol class="capabilities">
<li class="capability-list-item" ng-repeat="api in area.value">
- <span class="capability-name">{{api.api_name}}</span><br />
- Area: <em>{{area.area_name}}</em><br />
- Status: <span>Mandatory</span><br />
+ <span class="capability-name">{{api.api_name}}</span><br>
+ Area: <em>{{area.area_name}}</em><br>
+ Status: <span>Mandatory</span><br>
<a ng-click="showTests = !showTests">Tests ({{api.value.length}})</a>
<ul uib-collapse="!showTests">
<h4>{{area.area_name}}</h4>
<ol class="capabilities">
<li class="capability-list-item" ng-repeat="api in area.value">
- <span class="capability-name">{{api.api_name}}</span><br />
- Status: <span>Optional</span><br />
+ <span class="capability-name">{{api.api_name}}</span><br>
+ Status: <span>Optional</span><br>
<a ng-click="showTests = !showTests">Tests ({{api.value.length}})</a>
<ul uib-collapse="!showTests">
<button type="button" class="close" aria-hidden="true" ng-click="modal.close()">×</button>
<h4>Test List ({{modal.testListCount}})</h4>
<p>Use this test list with
- <a title="testapi-client" target="_blank"href="https://github.com/openstack/testapi-client">testapi-client</a>
- to run only tests in the {{modal.version}} OpenStack Powered™ guideline from capabilities with the
- following statuses:
+ <a title="testapi-client" target="_blank" href="https://github.com/openstack/testapi-client">testapi-client</a>
+ to run only tests in the {{modal.version}} OpenStack Powered™ guideline from capabilities with the
+ following statuses:
</p>
<ul class="list-inline">
<li class="required" ng-if="modal.status.required"> Required</li>
<div class="panel-body">
<div>
<a href="https://www.opnfv.org/verified"
- target="_blank">Overview >
+ target="_blank">Overview
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="https://www.opnfv.org/wp-content/uploads/sites/12/2018/09/LFN_CVP_Guidelines-1.0.0.pdf"
- target="_blank">Governance Guidelines >
+ target="_blank">Governance Guidelines
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="https://www.opnfv.org/wp-content/uploads/sites/12/2018/09/OVP-Terms-and-Conditions-092418.pdf"
- target="_blank">Terms & Conditions >
+ target="_blank">Terms & Conditions
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-fraser/submodules/dovetail/docs/testing/user/certificationworkflow/index.html"
- target="_blank">Process Workflow >
+ target="_blank">Process Workflow
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="https://na3.docusign.net/Member/PowerFormSigning.aspx?PowerFormId=dc24bf38-ea41-40d4-9e58-9babc6eec778"
- target="_blank">Participation Form >
+ target="_blank">Participation Form
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="https://www.opnfv.org/wp-content/uploads/sites/12/2018/05/OPNFV_Verified_BrandGuide_021618.pdf"
- target="_blank">OPNFV Verified Brand Guidelines >
+ target="_blank">OPNFV Verified Brand Guidelines
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div class="panel-body">
<div>
<a href="http://docs.opnfv.org/en/stable-fraser/submodules/dovetail/docs/testing/user/userguide/testing_guide.html"
- target="_blank">OVP / Dovetail User Guide >
+ target="_blank">OVP / Dovetail User Guide
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-fraser/submodules/dovetail/docs/testing/user/userguide/cli_reference.html"
- target="_blank">Dovetail CLI >
+ target="_blank">Dovetail CLI
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-fraser/submodules/dovetail/docs/testing/user/testspecification"
- target="_blank">Test Specifications >
+ target="_blank">Test Specifications
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-fraser/submodules/dovetail/docs/release/release-notes/index.html"
- target="_blank">Release Notes >
+ target="_blank">Release Notes
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-fraser/submodules/dovetail/docs/testing/user/reviewerguide/index.html"
- target="_blank">Reviewer Guide >
+ target="_blank">Reviewer Guide
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-fraser/submodules/dovetail/docs/testing/user/ovpaddendum/index.html"
- target="_blank">Guidelines Addendum >
+ target="_blank">Guidelines Addendum
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div class="panel-body">
<div>
<a href="http://docs.opnfv.org/en/stable-danube/submodules/dovetail/docs/testing/user/userguide/testing_guide.html"
- target="_blank">OVP / Dovetail User Guide >
+ target="_blank">OVP / Dovetail User Guide
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-danube/submodules/dovetail/docs/testing/user/userguide/cli_reference.html"
- target="_blank">Dovetail CLI >
+ target="_blank">Dovetail CLI
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-danube/submodules/dovetail/docs/testing/user/testspecification"
- target="_blank">Test Specifications >
+ target="_blank">Test Specifications
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-danube/submodules/dovetail/docs/release/release-notes/index.html"
- target="_blank">Release Notes >
+ target="_blank">Release Notes
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-danube/submodules/dovetail/docs/testing/user/reviewerguide/index.html"
- target="_blank">Reviewer Guide >
+ target="_blank">Reviewer Guide
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
<div>
<a href="http://docs.opnfv.org/en/stable-danube/submodules/dovetail/docs/testing/user/ovpaddendum/index.html"
- target="_blank">Guidelines Addendum >
+ target="_blank">Guidelines Addendum
<span class="glyphicon glyphicon-new-window" aria-hidden="true"></span>
</a>
</div>
</div>
<div class="home-content">
<div class="col-md-2">
- <img class="home-content-img" src="testapi-ui/assets/img/icon.png" />
+ <img class="home-content-img" src="testapi-ui/assets/img/icon.png" alt="OPNFV">
</div>
<div class="col-md-10">
<p class="home-content-text" style="padding-bottom: 40px;">
<tbody style="overflow: hidden; text-overflow: ellipsis;">
<tr class="company_row" ng-click="ctrl.getCompany(app)"
ng-repeat="app in ctrl.applications | filter:{approved:true} | orderBy : '-approve_date'">
- <td width="400">
- <img class="company_logo" ng-src="api/v1/cvp/applications/getlogo/{{app.company_logo}}" />
+ <td style="width: 400px;">
+ <img class="company_logo" ng-src="api/v1/cvp/applications/getlogo/{{app.company_logo}}" alt="OPNFV">
{{ app.organization_name}}
</td>
- <td width="300">{{ app.product_name}}</td>
- <td width="150">{{ app.ovp_category}}</td>
- <td width="150">{{ app.ovp_version}}</td>
+ <td style="width: 300px;">{{ app.product_name}}</td>
+ <td style="width: 150px;">{{ app.ovp_category}}</td>
+ <td style="width: 150px;">{{ app.ovp_version}}</td>
</tr>
</tbody>
</table>
<option value="true">Yes</option>
<option value="">No</option>
</select>
- <br />
+ <br>
<strong>Associated Guideline:</strong>
<select ng-model="modal.metaCopy.guideline"
ng-options="o as o.slice(0, -5) for o in modal.versionList"
class="form-control">
<option value="">None</option>
</select>
- <br />
+ <br>
<strong>Associated Target Program:</strong>
<select ng-model="modal.metaCopy.target"
class="form-control">
<option value="compute">OpenStack Powered Compute</option>
<option value="object">OpenStack Powered Object Storage</option>
</select>
- <hr />
+ <hr>
<strong>Associated Product:</strong>
<select ng-options="product as product.name for product in modal.products | arrayConverter | orderBy: 'name' track by product.id"
ng-model="modal.selectedProduct"
report page.
-->
-Test Filters:<br />
+Test Filters:<br>
<div class="btn-toolbar" role="toolbar">
<div class="btn-group button-margin" data-toggle="buttons">
<label class="btn btn-default" ng-click="ctrl.changeStatus('total')"
ng-class="{'active': ctrl.testStatus === 'total'}">
- <input type="radio" ng-model="ctrl.testStatus" value="total">
+ <input type="radio" ng-model="ctrl.testStatus" value="total" name="total">
<span class="text-primary">All</span>
</label>
<label class="btn btn-default" ng-click="ctrl.changeStatus('passed')"
ng-class="{'active': ctrl.testStatus === 'passed'}">
- <input type="radio" ng-model="ctrl.testStatus" value="passed">
+ <input type="radio" ng-model="ctrl.testStatus" value="passed" name="passed">
<span class="text-success">Passed</span>
</label>
<label class="btn btn-default" ng-click="ctrl.changeStatus('not passed')"
ng-class="{'active': ctrl.testStatus === 'not passed'}">
- <input type="radio" ng-model="ctrl.testStatus" value="not passed">
+ <input type="radio" ng-model="ctrl.testStatus" value="not passed" name="not passed">
<span class="text-danger">Not Passed</span>
</label>
</div>
ng-class="{'glyphicon-chevron-down': isOpen, 'glyphicon-chevron-right': !isOpen}"></i>
</uib-accordion-heading>
<ol class="capabilities">
- <li ng-repeat="(area, value) in data" ng-show="(ctrl.testStatus == 'passed' && value.pass != 0) || (ctrl.testStatus == 'not passed' && value.fail != 0) || ctrl.testStatus == 'total'">
+ <li ng-repeat="(area, value) in data"
+ ng-show="(ctrl.testStatus == 'passed' && value.pass != 0) || (ctrl.testStatus == 'not passed' && value.fail != 0) || ctrl.testStatus == 'total'">
<a ng-click="value.folder = !value.folder">
{{ area }}
- <span ng-if="ctrl.testStatus == 'total'" ng-class="{'text-success': value.total == value.pass, 'text-warning': (value.pass < value.total && value.pass > 0), 'text-danger': value.pass == 0}">[{{ value.pass }}/{{ value.total }}]</span>
+ <span ng-if="ctrl.testStatus == 'total'"
+ ng-class="{'text-success': value.total == value.pass, 'text-warning': (value.pass < value.total && value.pass > 0), 'text-danger': value.pass == 0}">
+ [{{ value.pass }}/{{ value.total }}]
+ </span>
<span ng-if="ctrl.testStatus == 'passed'" class="text-success">[{{ value.pass }}]</span>
<span ng-if="ctrl.testStatus == 'not passed'" class="text-danger">[{{ value.fail }}]</span>
</a>
<div class="row">
<div class="pull-left">
<div class="test-report">
- <strong>OVP version:</strong> {{ctrl.version}}<br />
- <strong>Test ID:</strong> {{ctrl.testId}}<br />
+ <strong>OVP version:</strong> {{ctrl.version}}<br>
+ <strong>Test ID:</strong> {{ctrl.testId}}<br>
</div>
</div>
</div>
</div>
- <strong>Total: {{ctrl.statistics.total}}, Pass: {{ ctrl.statistics.pass}}, Rate: {{ ctrl.statistics.pass / ctrl.statistics.total * 100 | number:2 }}%</strong><br />
- <strong>Mandatory Total: {{ctrl.statistics.mandatory.total}}, Pass: {{ ctrl.statistics.mandatory.pass }}, Rate: {{ ctrl.statistics.mandatory.pass / ctrl.statistics.mandatory.total * 100 | number:2 }}%</strong><br />
- <strong>Optional Total: {{ctrl.statistics.optional.total}}, Pass: {{ ctrl.statistics.optional.pass }}, Rate: {{ ctrl.statistics.optional.pass / ctrl.statistics.optional.total * 100 | number:2 }}%</strong><br />
+ <strong>Total: {{ctrl.statistics.total}}, Pass: {{ ctrl.statistics.pass}}, Rate: {{ ctrl.statistics.pass / ctrl.statistics.total * 100 | number:2 }}%</strong><br>
+ <strong>Mandatory Total: {{ctrl.statistics.mandatory.total}}, Pass: {{ ctrl.statistics.mandatory.pass }}, Rate: {{ ctrl.statistics.mandatory.pass / ctrl.statistics.mandatory.total * 100 | number:2 }}%</strong><br>
+ <strong>Optional Total: {{ctrl.statistics.optional.total}}, Pass: {{ ctrl.statistics.optional.pass }}, Rate: {{ ctrl.statistics.optional.pass / ctrl.statistics.optional.total * 100 | number:2 }}%</strong><br>
<hr>
- <strong>{{ ctrl.validation }}</strong><br />
+ <strong>{{ ctrl.validation }}</strong><br>
<div>
- <hr />
+ <hr>
<h4>Test Result Overview</h4>
<uib-accordion close-others=false>
<!-- The ng-repeat is used to pass in a local variable to the template. -->
src="ctrl.detailsTemplate"
onload="isOpen = true">
</ng-include>
- <br />
+ <br>
</uib-accordion>
</div>
</div>
<div>
<h4>Enter user name or email</h4>
- <input type="text" ng-model="ctrl.userName" />
+ <input type="text" ng-model="ctrl.userName">
<div style="text-align: center; margin-top: 20px;">
<button class="btn btn-default" ng-disabled="ctrl.userName==null || ctrl.userName==''"
ng-click="ctrl.addSharedUser(ctrl.tempResult, ctrl.userName)">Commit</button>
</h4>
<div class="form-group col-m-3">
<input class="form-contrl btn btn-success cvp-btn medium accent-color regular-button" type="file"
- file-model="resultFile"/>
+ file-model="resultFile">
</div>
<div class="form-group col-m-3">
<a class="btn btn-success cvp-btn medium accent-color regular-button" ng-click="ctrl.uploadFile()">
</td>
<td>
<div class="btn-group" uib-dropdown>
- <a id="single-button" type="button"
+ <a id="single-button-two" type="button"
class="btn btn-success cvp-btn medium accent-color regular-button" style="width: 130px;"
uib-dropdown-toggle>
Share List<span class="caret"></span>
</a>
- <ul class="dropdown-menu" uib-dropdown-menu role="menu" aria-labelledby="single-button"
+ <ul class="dropdown-menu" uib-dropdown-menu role="menu" aria-labelledby="single-button-two"
style="min-width: 200%;">
<li class="menu-item menu-item-type-post_type menu-item-object-page" role="menuitem"
ng-repeat="share in result.shared track by $index">
<!DOCTYPE html>
<head>
- <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
- <link rel="stylesheet" href="testapi-ui/assets/css/combine.css" />
+ <title>OVP</title>
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8">
+ <link rel="stylesheet" href="testapi-ui/assets/css/combine.css">
</head>
<body>
<div class="container-fluid common-main-container">
<!DOCTYPE html>
<!--
- Copyright (c) 2015 IBM Corp.
+ Copyright (c) 2015 IBM Corp.
- Licensed under the Apache License, Version 2.0 (the "License"); you may
- not use this file except in compliance with the License. You may obtain
- a copy of the License at
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
+ not use this file except in compliance with the License. You may obtain
+ a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
+ http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- License for the specific language governing permissions and limitations
- under the License.
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ License for the specific language governing permissions and limitations
+ under the License.
-->
<html id="ng-app">
<head>
<meta name="viewport" content="width=device-width">
<title>OVP</title>
- <link rel="icon" type="image/png" href="testapi-ui/favicon.ico" sizes="16x16" />
- <link rel="icon" type="image/png" href="testapi-ui/favicon.ico" sizes="32x32" />
+ <link rel="icon" type="image/png" href="testapi-ui/favicon.ico" sizes="16x16">
+ <link rel="icon" type="image/png" href="testapi-ui/favicon.ico" sizes="32x32">
<!-- CSS Libraries -->
- <link rel="stylesheet" href="testapi-ui/node_modules/bootstrap/dist/css/bootstrap.min.css" />
- <link rel="stylesheet" href="testapi-ui/node_modules/angular-busy/dist/angular-busy.min.css" />
- <link rel="stylesheet" href="testapi-ui/node_modules/ng-dialog/css/ngDialog.min.css" />
- <link rel="stylesheet" href="testapi-ui/node_modules/ng-dialog/css/ngDialog-theme-default.min.css" />
- <link rel="stylesheet" href="testapi-ui/node_modules/angular-xeditable/dist/css/xeditable.min.css" />
+ <link rel="stylesheet" href="testapi-ui/node_modules/bootstrap/dist/css/bootstrap.min.css">
+ <link rel="stylesheet" href="testapi-ui/node_modules/angular-busy/dist/angular-busy.min.css">
+ <link rel="stylesheet" href="testapi-ui/node_modules/ng-dialog/css/ngDialog.min.css">
+ <link rel="stylesheet" href="testapi-ui/node_modules/ng-dialog/css/ngDialog-theme-default.min.css">
+ <link rel="stylesheet" href="testapi-ui/node_modules/angular-xeditable/dist/css/xeditable.min.css">
<!-- CSS Internal Code -->
- <link rel="stylesheet" href="testapi-ui/assets/css/cvp-style.css" />
- <link rel="stylesheet" href="testapi-ui/assets/css/ascend.css" />
- <link rel="stylesheet" href="testapi-ui/assets/css/index.css" />
- <link rel="stylesheet" href="testapi-ui/assets/css/header.css" />
- <link rel="stylesheet" href="testapi-ui/assets/css/home/home.css" />
+ <link rel="stylesheet" href="testapi-ui/assets/css/cvp-style.css">
+ <link rel="stylesheet" href="testapi-ui/assets/css/ascend.css">
+ <link rel="stylesheet" href="testapi-ui/assets/css/index.css">
+ <link rel="stylesheet" href="testapi-ui/assets/css/header.css">
+ <link rel="stylesheet" href="testapi-ui/assets/css/home/home.css">
<!-- JS Libraries -->
<script src="testapi-ui/node_modules/jquery/dist/jquery.min.js"></script>
<div class="header-container-1">
<div class="row header-container-row">
<div class="col-md-3">
- <a href="/#/" >
- <img class="stnd dark-version header-logo" alt="OPNFV" src="testapi-ui/assets/img/logo.png" />
+ <a href="/#/">
+ <img class="stnd dark-version header-logo" alt="OPNFV" src="testapi-ui/assets/img/logo.png">
</a>
</div>
<div class="col-md-offset-1 header-title">
--- /dev/null
+htmllint-cli
+csslint
# and then run "tox" from this directory.
[tox]
-envlist = pep8,py27
+envlist = weblint,pep8,py27
skipsdist = True
sitepackages = True
commands=
py.test \
--basetemp={envtmpdir} \
- --cov \
+ --cov=opnfv_testapi \
--cov-report term-missing \
--cov-report xml \
{posargs}
HOME = {envtmpdir}
PYTHONPATH = {toxinidir}
+[testenv:weblint]
+deps = nodeenv
+commands =
+ nodeenv --force -r node-requirements.txt {envdir}/npmenv
+ bash -c 'ln -f -s {envdir}/npmenv/bin/node {envdir}/bin/node'
+ {envdir}/npmenv/bin/htmllint --cwd {toxinidir}/3rd_party/
+ {envdir}/npmenv/bin/csslint {toxinidir}/3rd_party/
+whitelist_externals = bash
+
[testenv:pep8]
deps = flake8
-commands = flake8 {toxinidir}
+commands = flake8 opnfv_testapi
[flake8]
# H803 skipped on purpose per list discussion.