\n" +
"
\n" +
diff --git a/dist/scripts/vendor.js b/dist/scripts/vendor.js
index 20f4f99ede..d4744406b4 100644
--- a/dist/scripts/vendor.js
+++ b/dist/scripts/vendor.js
@@ -72764,7 +72764,7 @@ description: "Name must consist of lower-case letters, numbers, periods, and hyp
}).constant("IS_IOS", /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream), hawtioPluginLoader.addModule("openshiftCommonUI"), angular.module("openshiftCommonUI").run([ "$templateCache", function(e) {
"use strict";
e.put("src/components/binding/bindApplicationForm.html", '
\n'),
-e.put("src/components/binding/bindResults.html", '
\n
\n
\n
\n Pending \n The binding was created but is not ready yet.
\n \n
\n
\n
\n \n Success \n
\n {{ctrl.serviceToBind}} \n has been bound \n to {{ctrl.applicationToBind}} successfully \n \n \n
\n The binding operation created the secret\n
{{ctrl.binding.spec.secretName}} \n
{{ctrl.binding.spec.secretName}} \n that you may need to reference in your application.\n
Its data will be available to your application as environment variables. \n
\n
\n \n Info \n The binding secret will only be available to new pods. You will need to redeploy your application.\n
\n
\n
\n
\n
\n \n Error \n
\n Binding Failed \n \n \n
\n \n {{ctrl.error.data.message | upperFirst}}\n \n \n An error occurred creating the binding.\n \n
\n
\n'),
+e.put("src/components/binding/bindResults.html", '
\n
\n
\n
\n Pending \n The binding was created but is not ready yet.
\n \n
\n
\n
\n \n Success \n
\n {{ctrl.serviceToBind}} \n has been bound \n to {{ctrl.applicationToBind}} successfully \n \n \n
\n The binding operation created the secret\n
{{ctrl.binding.spec.secretName}} \n
{{ctrl.binding.spec.secretName}} \n that you may need to reference in your application.\n
Its data will be available to your application as environment variables. \n
\n
\n \n Info \n The binding secret will only be available to new pods. You will need to redeploy your application.\n
\n
\n
\n
\n
\n \n Error \n
\n Binding Failed \n \n \n
\n \n {{ctrl.error.data.message | upperFirst}}\n \n \n An error occurred creating the binding.\n \n
\n
\n {{ctrl.binding | bindingFailedMessage}}\n
\n
\n'),
e.put("src/components/binding/bindServiceForm.html", '
\n'),
e.put("src/components/create-project/createProject.html", '
\n'),
e.put("src/components/delete-project/delete-project-button.html", '
\n'), e.put("src/components/delete-project/delete-project-modal.html", '
\n \x3c!-- Use a form so that the enter key submits when typing a project name to confirm. --\x3e\n
\n \n
Are you sure you want to delete the project \'{{project | displayName}} \'? \n
\n This will delete all resources associated with\n the project {{project | displayName}} and cannot be\n undone . Make sure this is something you really want to do!\n
\n
\n
Type the name of the project to confirm.
\n
\n project to delete \n \n
\n
\n
\n \n \n
\n'),
@@ -73467,8 +73467,26 @@ type: t
return function(t) {
return "True" === _.get(e(t, "Ready"), "status");
};
+} ]).filter("serviceInstanceReadyMessage", [ "statusConditionFilter", function(e) {
+return function(t) {
+return _.get(e(t, "Ready"), "message");
+};
+} ]).filter("isServiceInstanceFailed", [ "statusConditionFilter", function(e) {
+return function(t) {
+return "True" === _.get(e(t, "Failed"), "status");
+};
+} ]).filter("serviceInstanceFailedMessage", [ "isServiceInstanceFailedFilter", "statusConditionFilter", function(e, t) {
+return function(n) {
+if (e(n)) return _.get(t(n, "Failed"), "message");
+};
} ]).filter("isBindingReady", [ "isServiceInstanceReadyFilter", function(e) {
return e;
+} ]).filter("isBindingFailed", [ "isServiceInstanceFailedFilter", function(e) {
+return e;
+} ]).filter("bindingFailedMessage", [ "serviceInstanceFailedMessageFilter", function(e) {
+return e;
+} ]).filter("bindingReadyMessage", [ "serviceInstanceReadyMessageFilter", function(e) {
+return e;
} ]).filter("hasDeployment", [ "annotationFilter", function(e) {
return function(t) {
return !!e(t, "deployment.kubernetes.io/revision");
@@ -73712,10 +73730,10 @@ return t || o.log("No preferred version for ", e), t;
};
} ]), angular.module("openshiftCommonServices").service("ApplicationsService", [ "$q", "DataService", function(e, t) {
var n = function(e) {
-return t.list("replicationcontrollers", e, {
+return t.list("replicationcontrollers", e, null, {
http: {
params: {
-labelSelector: "!openshift.io/deployment-config-name"
+labelSelector: "!openshift.io/deployment-config.name"
}
}
});
@@ -73723,7 +73741,7 @@ labelSelector: "!openshift.io/deployment-config-name"
return t.list({
group: "extensions",
resource: "replicasets"
-}, e, {
+}, e, null, {
http: {
params: {
labelSelector: "!pod-template-hash"
@@ -74008,12 +74026,13 @@ matchLabels: a
name: r,
selector: a
}), o;
-}, h = function(e, t) {
-var n = a(e, t);
-if (_.get(e, "metadata.deletionTimestamp")) return !1;
-if (!n) return !!e;
-var i = s(e, n), r = _.get(i, "bindable");
-return !0 === r || !1 !== r && n.bindable;
+}, h = function(t, n) {
+if (_.get(t, "metadata.deletionTimestamp")) return !1;
+if (e("isServiceInstanceFailed")(t, "Failed")) return !1;
+var i = a(t, n);
+if (!i) return !!t;
+var r = s(t, i), o = _.get(r, "bindable");
+return !0 === o || !1 !== o && i.bindable;
}, f = function(e) {
var t = {};
return _.each(e, function(e) {
@@ -74460,37 +74479,37 @@ namespace: r
return _.get(i, "partialObjectMetadataList") ? a + "#application/json;as=PartialObjectMetadataList;v=v1alpha1;g=meta.k8s.io" : a;
}, f.prototype._startListOp = function(e, n, i) {
i = i || {};
-var r = this._uniqueKey(e, null, n, i);
-this._listInFlight(r, !0);
-var o = {};
-i.partialObjectMetadataList && (o.Accept = "application/json;as=PartialObjectMetadataList;v=v1alpha1;g=meta.k8s.io");
-var a = this;
-n.projectPromise && !e.equals("projects") ? n.projectPromise.done(function(s) {
+var r = _.get(i, "http.params") || {}, o = this._uniqueKey(e, null, n, i);
+this._listInFlight(o, !0);
+var a = {};
+i.partialObjectMetadataList && (a.Accept = "application/json;as=PartialObjectMetadataList;v=v1alpha1;g=meta.k8s.io");
+var s = this;
+n.projectPromise && !e.equals("projects") ? n.projectPromise.done(function(l) {
t(angular.extend({
method: "GET",
auth: {},
-headers: o,
-url: a._urlForResource(e, null, n, !1, {
-namespace: s.metadata.name
-})
-}, i.http || {})).success(function(t, o, s, l, c) {
-a._listOpComplete(r, e, n, i, t);
-}).error(function(t, n, o, s) {
-a._listInFlight(r, !1);
-var l = a._listDeferred(r);
-delete a._listDeferredMap[r], l.reject(t, n, o, s), _.get(i, "errorNotification", !0) && b("Failed to list " + e, n);
+headers: a,
+url: s._urlForResource(e, null, n, !1, _.assign({}, r, {
+namespace: l.metadata.name
+}))
+}, i.http || {})).success(function(t, r, a, l, c) {
+s._listOpComplete(o, e, n, i, t);
+}).error(function(t, n, r, a) {
+s._listInFlight(o, !1);
+var l = s._listDeferred(o);
+delete s._listDeferredMap[o], l.reject(t, n, r, a), _.get(i, "errorNotification", !0) && b("Failed to list " + e, n);
});
}) : t({
method: "GET",
auth: {},
-headers: o,
-url: this._urlForResource(e, null, n)
-}).success(function(t, o, s, l, c) {
-a._listOpComplete(r, e, n, i, t);
-}).error(function(t, n, o, s) {
-a._listInFlight(r, !1);
-var l = a._listDeferred(r);
-delete a._listDeferredMap[r], l.reject(t, n, o, s), _.get(i, "errorNotification", !0) && b("Failed to list " + e, n);
+headers: a,
+url: this._urlForResource(e, null, n, !1, r)
+}).success(function(t, r, a, l, c) {
+s._listOpComplete(o, e, n, i, t);
+}).error(function(t, n, r, a) {
+s._listInFlight(o, !1);
+var l = s._listDeferred(o);
+delete s._listDeferredMap[o], l.reject(t, n, r, a), _.get(i, "errorNotification", !0) && b("Failed to list " + e, n);
});
}, f.prototype._listOpComplete = function(e, t, n, i, r) {
r.items || console.warn("List request for " + t + " returned a null items array. This is an invalid API response.");
diff --git a/dist/styles/main.css b/dist/styles/main.css
index 12d758ae66..816188e03e 100644
--- a/dist/styles/main.css
+++ b/dist/styles/main.css
@@ -766,7 +766,6 @@ select[multiple].input-lg,textarea.input-lg{height:auto}
.form-horizontal .form-group-sm .control-label{padding-top:3px;font-size:11px}
}
.btn{display:inline-block;margin-bottom:0;font-weight:600;text-align:center;vertical-align:middle;touch-action:manipulation;cursor:pointer;border:1px solid transparent;white-space:nowrap;padding:2px 6px;font-size:13px;line-height:1.66666667;border-radius:1px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
-.bootstrap-switch,.datepicker table{-webkit-user-select:none;-moz-user-select:none}
.btn.active.focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn:active:focus,.btn:focus{outline:dotted thin!important;outline:-webkit-focus-ring-color auto 5px!important;outline-offset:-2px!important}
.btn.focus,.btn:focus,.btn:hover{color:#4d5258;text-decoration:none}
.btn.active,.btn:active{outline:0;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,.125);box-shadow:inset 0 3px 5px rgba(0,0,0,.125)}
@@ -2375,7 +2374,7 @@ td>.progress:first-child:last-child{margin-bottom:0;margin-top:3px}
.datepicker-dropdown.datepicker-orient-bottom:after{top:-6px}
.datepicker-dropdown.datepicker-orient-top:before{bottom:-7px;border-bottom:0;border-top:7px solid #bbb}
.datepicker-dropdown.datepicker-orient-top:after{bottom:-6px;border-bottom:0;border-top:6px solid #fff}
-.datepicker table{margin:0;-webkit-touch-callout:none;-khtml-user-select:none;-ms-user-select:none;user-select:none}
+.datepicker table{margin:0;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
.datepicker table tr td,.datepicker table tr th{text-align:center;width:30px;height:30px;border:none}
.datepicker table tr td.new,.datepicker table tr td.old{color:#9c9c9c}
.datepicker table tr td.day:hover,.datepicker table tr td.focused{background:#f1f1f1;cursor:pointer}
@@ -2511,8 +2510,7 @@ select.bs-select-hidden,select.selectpicker{display:none!important}
.bs-donebutton .btn-group button{width:100%}
.bs-searchbox+.bs-actionsbox{padding:0 8px 4px}
.bs-searchbox .form-control{margin-bottom:0;width:100%;float:none}
-.bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:1px;border:1px solid #bbb;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}
-.c3 text,.log-line-number{-moz-user-select:none;-webkit-user-select:none}
+.bootstrap-switch{display:inline-block;direction:ltr;cursor:pointer;border-radius:1px;border:1px solid #bbb;position:relative;text-align:left;overflow:hidden;line-height:8px;z-index:0;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;vertical-align:middle;-webkit-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s,box-shadow ease-in-out .15s}
.bootstrap-switch .bootstrap-switch-container{display:inline-block;top:0;border-radius:1px;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}
.bootstrap-switch .bootstrap-switch-handle-off,.bootstrap-switch .bootstrap-switch-handle-on,.bootstrap-switch .bootstrap-switch-label{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;cursor:pointer;display:inline-block!important;height:100%;padding:2px 6px;font-size:13px;line-height:21px}
.ie9.layout-pf-alt-fixed .nav-pf-vertical-alt,.ie9.layout-pf-fixed .nav-pf-secondary-nav,.ie9.layout-pf-fixed .nav-pf-tertiary-nav,.ie9.layout-pf-fixed .nav-pf-vertical,.list-group-item-header{box-sizing:content-box}
@@ -2546,7 +2544,7 @@ select.bs-select-hidden,select.selectpicker{display:none!important}
.bootstrap-touchspin .input-group-btn-vertical i{position:absolute;font-weight:400}
.c3 svg{font:10px sans-serif}
.c3 line,.c3 path{fill:none;stroke:#000}
-.c3 text{user-select:none}
+.c3 text{-webkit-user-select:none;-moz-user-select:none;user-select:none}
.c3-bars path,.c3-event-rect,.c3-legend-item-tile,.c3-xgrid-focus,.c3-ygrid{shape-rendering:crispEdges}
.c3-chart-arc text{fill:#fff;font-size:13px}
.c3-grid text{fill:#aaa}
@@ -4099,6 +4097,7 @@ div.hopscotch-bubble .hopscotch-nav-button.prev{color:#030303}
.landing-search-form .search-pf-input-group .pficon-close{font-size:17px;padding-top:.3em}
.landing-search-form .dropdown-menu{margin-top:0;width:100%}
.landing-search-form .dropdown-menu>li>a.catalog-search-match{display:flex;line-height:1.5;padding:3px 10px 3px 5px;white-space:normal}
+.order-service-details .order-service-description-block .description,.pre-wrap{white-space:pre-wrap}
.landing-search-form .dropdown-menu .active>a.catalog-search-match,.landing-search-form .dropdown-menu :focus{background-color:#def3ff!important;border-color:#bee1f4!important;color:inherit!important}
.landing-search-form .dropdown-menu .active>a.catalog-search-match.no-matches{background-color:transparent!important;border-color:transparent!important}
.landing-side-bar{background-color:#292e34;color:#fff;z-index:1029}
@@ -4122,7 +4121,6 @@ div.hopscotch-bubble .hopscotch-nav-button.prev{color:#030303}
.order-service-details .order-service-details-top .service-title-area{flex:1 1 0%}
.order-service-details .order-service-details-top .sub-title{font-size:20px;font-weight:600;color:#72767b}
.order-service-details .order-service-description-block{margin-top:15px}
-.order-service-details .order-service-description-block .description{white-space:pre-wrap}
.order-service-details .order-service-description-block .learn-more-link{font-size:11px;white-space:nowrap}
.order-service-details .order-service-documentation-url{margin-top:4px}
.order-service-details .order-service-documentation-url a{margin-right:10px}
@@ -4365,7 +4363,6 @@ body.overlay-open,body.overlay-open .landing,body.overlay-open .landing-side-bar
.services-view .services-view-container .services-categories>li>a .services-sub-category-tab-icon,.services-view .services-view-container .services-sub-categories>li>a .services-sub-category-tab-icon{display:none!important}
}
.services-view .spinner-container{background:#fff;display:flex;flex:1 1 auto;padding-top:100px;padding-bottom:100px}
-.pre-wrap{white-space:pre-wrap}
.visible-xlg-inline-block{display:none!important}
@media (max-width:767px){.td-long-string{word-wrap:break-word;word-break:break-word;overflow-wrap:break-word;min-width:0}
}
@@ -4493,6 +4490,8 @@ code.command{display:inline-block;line-height:1.3;margin-right:2px}
.service-binding h3{line-height:1.4;margin-top:0}
.service-binding h3 small{display:block;margin-top:5px}
.service-binding h3 small:first-of-type{margin-top:0}
+.service-binding .component-label{font-size:11px;font-weight:500;padding:0 0 4px;color:#9c9c9c;text-transform:uppercase}
+.service-binding .component-label .sublabel{font-size:10px;margin-left:2px;text-transform:none}
.resource-details .service-binding h3{border-bottom:0;margin:0;padding-bottom:5px}
.service-binding-actions{font-size:13px;font-weight:400}
.service-binding-actions>a{border-left:1px solid #d1d1d1;padding:0 10px}
@@ -4998,7 +4997,7 @@ h2+.list-view-pf{margin-top:20px}
.overview .empty-state{padding-top:20px}
.overview .expanded-section{margin-top:20px}
.overview .expanded-section .row>[class^=col-]{margin-bottom:10px}
-@media (min-width:1200px){.overview .expanded-section .row>[class^=col-].overview-bindings,.overview .expanded-section .row>[class^=col-].overview-builds-msg,.overview .expanded-section .row>[class^=col-].overview-routes{padding-left:0}
+@media (min-width:1200px){.overview .expanded-section .row>[class^=col-].overview-builds-msg,.overview .expanded-section .row>[class^=col-].overview-routes{padding-left:0}
}
.overview .expanded-section h3{line-height:1.4;margin-bottom:5px;margin-top:0;width:100%;word-wrap:break-word;word-break:break-word;overflow-wrap:break-word;min-width:0}
.overview .expanded-section .section-title{font-family:inherit;font-weight:500;line-height:1.1;color:inherit;margin-top:10.5px;margin-bottom:10.5px;font-size:14px;border-bottom:1px solid #dcdcdc;padding-bottom:10px}
@@ -5706,7 +5705,7 @@ alerts+.chromeless .log-loading-msg{margin-top:130px}
.log-line{color:#d1d1d1}
.log-line:hover{background-color:#22262b;color:#ededed}
.log-line-number:before{content:attr(data-line-number)}
-.log-line-number{-ms-user-select:none;border-right:1px #272b30 solid;padding-right:10px;vertical-align:top;white-space:nowrap;width:60px;color:#72767b}
+.log-line-number{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;border-right:1px #272b30 solid;padding-right:10px;vertical-align:top;white-space:nowrap;width:60px;color:#72767b}
.log-line-text{padding:0 10px;white-space:pre-wrap;width:100%}
.appended-icon,.project-date [am-time-ago],.projects-list [am-time-ago]{white-space:nowrap}
.log-line-text::-moz-selection{color:#101214;background:#e5e5e5}
diff --git a/package.json b/package.json
index e260c86ded..508f44ef19 100644
--- a/package.json
+++ b/package.json
@@ -12,17 +12,13 @@
"clean-css": "3.4.12",
"connect-modrewrite": "0.7.9",
"geckodriver": "1.3.0",
-
"grunt": "0.4.5",
-
"grunt-angular-templates": "1.0.3",
"grunt-cli": "1.1.0",
"grunt-concurrent": "2.3.1",
"grunt-contrib-clean": "1.0.0",
"grunt-contrib-concat": "1.0.0",
-
"grunt-contrib-connect": "1.0.2",
-
"grunt-contrib-copy": "1.0.0",
"grunt-contrib-cssmin": "1.0.1",
"grunt-contrib-htmlmin": "1.3.0",
@@ -33,9 +29,7 @@
"grunt-contrib-watch": "1.0.0",
"grunt-htmlhint": "0.4.1",
"grunt-istanbul-coverage": "0.0.5",
-
"grunt-karma": "^2.0.0",
-
"grunt-newer": "0.7.0",
"grunt-ng-annotate": "0.3.2",
"grunt-postcss": "^0.8.0",
@@ -46,13 +40,10 @@
"grunt-wiredep": "3.0.0",
"html-minifier": "1.1.1",
"imagemin": "1.0.5",
-
"jasmine-core": "^2.8.0",
"jasmine-beforeall": "0.1.1",
"jasmine-spec-reporter": "1.1.2",
-
"jshint-stylish": "0.2.0",
-
"karma": "^1.7.1",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage": "^1.1.1",
@@ -62,14 +53,11 @@
"karma-jasmine-diff-reporter": "^1.1.0",
"karma-phantomjs-launcher": "^1.0.4",
"karma-nightmare": "^0.4.10",
-
"less": "2.6.1",
"load-grunt-tasks": "0.4.0",
"lodash": "3.10.1",
-
"protractor": "1.7.0",
"protractor-screenshot-reporter": "^0.0.5",
-
"serve-static": "1.10.2",
"time-grunt": "0.3.2"
},