diff --git a/app/components/new-catalog/component.js b/app/components/new-catalog/component.js
index c31d10fe1..1b2f8fb46 100644
--- a/app/components/new-catalog/component.js
+++ b/app/components/new-catalog/component.js
@@ -9,6 +9,7 @@ import { task } from 'ember-concurrency';
export default Ember.Component.extend(NewOrEdit, {
intl: Ember.inject.service(),
+ catalog: Ember.inject.service(),
projects: Ember.inject.service(),
settings: Ember.inject.service(),
@@ -140,9 +141,7 @@ export default Ember.Component.extend(NewOrEdit, {
this.set('stackResource.environment', current);
}
- var selectedTemplateModel = yield this.get('store').request({
- url: url
- }).then((response) => {
+ var selectedTemplateModel = yield this.get('catalog').fetchByUrl(url).then((response) => {
if (response.questions) {
response.questions.forEach((item) => {
// This will be the component that is rendered to edit this answer
diff --git a/app/components/save-cancel/component.js b/app/components/save-cancel/component.js
index 9990344e2..abd13d2d9 100644
--- a/app/components/save-cancel/component.js
+++ b/app/components/save-cancel/component.js
@@ -10,7 +10,7 @@ export default Ember.Component.extend({
cancelDisabled: false,
savedLabel: 'saveCancel.saved',
forFooter: true,
- classNames: ['text-center' , 'p-20'],
+ classNames: ['text-center', 'pt-20', 'pb-20'],
classNamesBindings: ['forFooter:footer-actions'],
saving: false,
diff --git a/app/components/service-row/template.hbs b/app/components/service-row/template.hbs
index 068d16cfd..21642b1c2 100644
--- a/app/components/service-row/template.hbs
+++ b/app/components/service-row/template.hbs
@@ -36,8 +36,6 @@
{{/if}}
- A: {{get subMatches model.id}}
- B: {{model.instances.length}}
{{#if showInstanceCount}}
{{#if subMatches}}
{{#if (lt (get subMatches model.id) model.instances.length)}}
diff --git a/app/models/dnsservice.js b/app/models/dnsservice.js
index 77932a114..ce454dc12 100644
--- a/app/models/dnsservice.js
+++ b/app/models/dnsservice.js
@@ -1,4 +1,3 @@
-import Ember from 'ember';
import Service from 'ui/models/service';
export default Service.extend({
diff --git a/app/models/template.js b/app/models/template.js
index 25b39befd..aff6dce5f 100644
--- a/app/models/template.js
+++ b/app/models/template.js
@@ -7,6 +7,12 @@ export default Resource.extend({
settings: Ember.inject.service(),
intl: Ember.inject.service(),
+ headers: function() {
+ return {
+ [C.HEADER.PROJECT_ID]: this.get('projects.current.id')
+ };
+ }.property('project.current.id'),
+
cleanProjectUrl: Ember.computed('links.project', function() {
let projectUrl = this.get('links.project');
let pattern = new RegExp('^([a-z]+://|//)', 'i');
diff --git a/app/models/templateversion.js b/app/models/templateversion.js
index 7e9a172d6..0385d64f2 100644
--- a/app/models/templateversion.js
+++ b/app/models/templateversion.js
@@ -2,6 +2,14 @@ import Resource from 'ember-api-store/models/resource';
import C from 'ui/utils/constants';
export default Resource.extend({
+ projects: Ember.inject.service(),
+
+ headers: function() {
+ return {
+ [C.HEADER.PROJECT_ID]: this.get('projects.current.id')
+ };
+ }.property('project.current.id'),
+
filesAsArray: function() {
var obj = (this.get('files')||{});
var out = [];
diff --git a/app/services/catalog.js b/app/services/catalog.js
index 7b73203c4..f0e1487dd 100644
--- a/app/services/catalog.js
+++ b/app/services/catalog.js
@@ -95,7 +95,7 @@ export default Ember.Service.extend({
}
let url = this._addLimits(`${this.get('app.catalogEndpoint')}/templates`, qp);
- return this.get('store').request({url: url, headers: {[C.HEADER.PROJECT_ID]: this.get('projects.current.id')},}).then((res) => {
+ return this.get('store').request({url: url, headers: {[C.HEADER.PROJECT_ID]: this.get('projects.current.id')}}).then((res) => {
res.catalogId = catalogId;
this.set('templateCache', res);
return this.filter(res, params.category, templateBase, plusInfra);
@@ -108,6 +108,10 @@ export default Ember.Service.extend({
});
},
+ fetchByUrl(url) {
+ return this.get('store').request({url: url, headers: {[C.HEADER.PROJECT_ID]: this.get('projects.current.id')}});
+ },
+
filter(data, category, templateBase, plusInfra) {
let bases = [];
diff --git a/app/services/endpoint.js b/app/services/endpoint.js
index 84e8eaef8..d120b81d0 100644
--- a/app/services/endpoint.js
+++ b/app/services/endpoint.js
@@ -1,5 +1,6 @@
import Ember from 'ember';
import C from 'ui/utils/constants';
+import Util from 'ui/utils/util';
export default Ember.Service.extend({
cookies: Ember.inject.service(),
diff --git a/translations/en-us.yaml b/translations/en-us.yaml
index 740b4e741..534682ed4 100644
--- a/translations/en-us.yaml
+++ b/translations/en-us.yaml
@@ -13,8 +13,9 @@ generic:
cancel: Cancel
closeModal: Close
command: Command
- confirm: Confirm
collapseAll: Collapse All
+ confirm: Confirm
+ containers: Containers
created: Created
createdDate: "Created {date}"
default: Default
@@ -42,6 +43,7 @@ generic:
loading: "Loading..."
megabyte: 'MB'
mibibyte: 'MiB'
+ millisecond: 'ms'
missing: "*%MISSING%*"
moreActions: More Actions
na: 'n/a'
@@ -55,6 +57,7 @@ generic:
saved: Saved
saving: Saving
search: Search
+ seconds: seconds
select: Select
service: Service
stack: Stack
@@ -2469,12 +2472,24 @@ formUserLabels:
protip: "ProTip: Paste one or more lines of key=value pairs into any key field for easy bulk entry."
formUpgrade:
- size: Batch Size
- interval: Batch Interval
- sec: sec
- behavior: Start Behavior
- startStop: Start before Stopping
- whichServices: Which Services
+ title: Upgrade
+ detail: Configure how containers are replaced when performing an upgrade.
+ batchSize:
+ label: Batch Size
+ detail: Up to this many containers will be replaced at once.
+ interval:
+ label: Batch Interval
+ detail: After finishing a batch of containers, wait this long before starting the next batch
+ behavior: Replacement Behavior
+ startFirst:
+ label: Start new, then stop old
+ detail: Start new containers before stopping the old ones. If the service publishes a port, there must be enough eligible hosts availeblt to run Batch Size new containers, because the old containers are still actively using the ports.
+ stopFirst:
+ label: Stop old, then start new
+ detail: Stop the old containers (up to the Batch Size), then start new ones. This allows the reuse of published ports. Adjust Batch Size to ensure that you keep enough active capacity to run your application.
+ force:
+ label: Force Redeploy
+ detail: During an upgrade, containers are normally only replaced if part of their definition has changed. To force one to redeploy for this upgrade, select it here.
formValueArray:
addActionLabel: Add Value
@@ -3190,7 +3205,6 @@ modalAuditlogInfo:
response: "Response Object:"
modalContainerStop:
- uom: seconds
header: "Are you sure you want to stop"
helpText: "The container will be forcibly terminated if it does not stop itself before the timeout expires"
protip: "ProTip: Hold the {key} key while clicking stop to bypass this confirmation."
@@ -3415,7 +3429,7 @@ newContainer:
keyPlaceholder: e.g. FOO
valueLabel: Value
valuePlaceholder: e.g. bar
- emptyPrimaryService: "(Primary Service)"
+ emptyPrimaryService: "(Primary)"
emptySidekick: "(Sidekick #{num})"
addSidekickContainer: Add Sidekick Container
addSidekickVm: Add Sidekick VM