diff --git a/app/apps-tab/index/route.js b/app/apps-tab/index/route.js index dbc627351..512f5ce34 100644 --- a/app/apps-tab/index/route.js +++ b/app/apps-tab/index/route.js @@ -15,11 +15,14 @@ export default Ember.Route.extend({ let extInfo = parseExternalId(stack.get('externalId')); deps.push(catalog.fetchTemplate(extInfo.templateId, false)); }); - return Ember.RSVP.all(deps).then((ahray) => { - ahray.forEach((ary) => { - let stck = stacks.findBy('externalIdInfo.templateId', ary.id); - stck.catalogTemplateInfo = ary; // need that generica catalog icon + + return Ember.RSVP.all(deps).then((templates) => { + templates.forEach((template) => { + stacks.filterBy('externalIdInfo.templateId', template.id).forEach((stack) => { + Ember.set(stack,'catalogTemplateInfo',template); + }); }); + return Ember.Object.create({ stacks: stacks, }); diff --git a/app/balancers/index/template.hbs b/app/balancers/index/template.hbs index f338e71a7..309dcda62 100644 --- a/app/balancers/index/template.hbs +++ b/app/balancers/index/template.hbs @@ -62,14 +62,6 @@ {{/if}} {{/sortable-table}} {{else}} -
+ {{t 'formBalancerListeners.help'}} +
+| - | {{t 'formBalancerRules.access.label'}}{{field-required}} | - {{#if showIp}} -{{t 'formBalancerRules.sourceIp.label'}} | - {{/if}} -{{t 'formBalancerRules.protocol.label'}}{{field-required}} | -{{t 'formBalancerRules.hostname.label'}} | -{{t 'formBalancerRules.sourcePort.label'}}{{field-required}} | -{{t 'formBalancerRules.path.label'}} | -{{t 'formBalancerRules.target'}}{{field-required}} | -{{t 'formBalancerRules.targetPort.label'}}{{field-required}} | - {{else}} -{{t 'formBalancerRules.hostname.label'}} | -{{t 'formBalancerRules.path.label'}} | -{{t 'formBalancerRules.targetPort.label'}}{{field-required}} | - {{/if}} - {{#if showBackend}} -{{t 'formBalancerRules.backendName.label'}} | - {{/if}} - {{#if showListeners}} -- {{/if}} - |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
- |
-
- - - | - - {{#if showIp}} -- {{#if (eq rule.access "public")}} - {{input type="text" class="form-control input-sm" value=rule.sourceIp placeholder=(t 'formBalancerRules.sourceIp.placeholder')}} - {{else}} - {{t 'generic.na'}} - {{/if}} - | - {{/if}} - -- - | - {{/if}} - -- {{#if rule.canHostname}} - {{input type="text" class="form-control input-sm" value=rule.hostname placeholder=(t 'formBalancerRules.hostname.placeholder')}} - {{else}} - {{t 'generic.na'}} - {{/if}} - | - - {{#if showListeners}} -- {{input-integer class="form-control input-sm" min="1" max="65535" value=rule.sourcePort placeholder=(t 'formBalancerRules.sourcePort.placeholder')}} - | - {{/if}} - -- {{#if rule.canPath}} - {{input type="text" class="form-control input-sm" value=rule.path placeholder=(t 'formBalancerRules.path.placeholder')}} - {{else}} - {{t 'generic.na'}} - {{/if}} - | - - {{#if showListeners}} -- {{#if rule.isSelector}} - {{input type="text" class="form-control input-sm" value=rule.selector placeholder=(t 'formBalancerRules.selector.placeholder')}} - {{else}} - {{schema/input-service selectClass="form-control input-sm" canBalanceTo=true selected=rule.serviceId}} - {{/if}} - | - {{/if}} - -- {{input-integer class="form-control input-sm" min="1" max="65535" value=rule.targetPort placeholder=(t 'formBalancerRules.targetPort.placeholder')}} - | - - {{#if showBackend}} -- {{input type="text" class="form-control input-sm" value=rule.backendName placeholder=(t 'formBalancerRules.backendName.placeholder')}} - | - {{/if}} - - {{#if showListeners}} -
- |
- {{/if}}
-
- {{t 'formBalancerRules.help.prefix'}} - {{#unless showBackend}} - - {{t 'formBalancerRules.help.showBackendLink'}} - - {{/unless}} - {{#unless showIp}} - - {{t 'formBalancerRules.help.showIpLink'}} - - {{/unless}} - {{t 'formBalancerRules.help.suffix'}} -
- {{else}} - {{t 'formBalancerRules.noRules'}} {{/if}} -| + {{/unless}} + + | {{t 'formBalancerRules.hostname.label'}} | + +{{t 'formBalancerRules.path.label'}} | + + {{#if singleTarget}} ++ {{else}} + | {{t 'formBalancerRules.target'}}{{field-required}} | + {{/if}} + +{{t 'formBalancerRules.targetPort.label'}}{{field-required}} | + + {{#if showBackend}} +{{t 'formBalancerRules.backendName.label'}} | + {{/if}} + + {{#if editing}} ++ {{/if}} + |
|---|---|---|---|---|---|---|---|
|
+ |
+ {{/unless}}
+
+ + {{#if rule.canHostname}} + {{input type="text" class="input-sm" value=rule.hostname placeholder=(t 'formBalancerRules.hostname.placeholder')}} + {{else}} + {{t 'generic.na'}} + {{/if}} + | + ++ {{#if rule.canPath}} + {{input type="text" class="input-sm" value=rule.path placeholder=(t 'formBalancerRules.path.placeholder')}} + {{else}} + {{t 'generic.na'}} + {{/if}} + | + + {{#if singleTarget}} ++ {{else}} + | + {{#if (eq rule.kind 'selector')}} + {{input type="text" class="input-sm" value=rule.selector placeholder=(t 'formBalancerRules.selector.placeholder')}} + {{else if (eq rule.kind 'instance')}} + {{schema/input-container selectClass="input-sm" selected=rule.instanceId}} + {{else}} + {{schema/input-service selectClass="input-sm" canBalanceTo=true selected=rule.serviceId}} + {{/if}} + | + {{/if}} + ++ {{input-integer class="input-sm" min="1" max="65535" value=rule.targetPort placeholder=(t 'formBalancerRules.targetPort.placeholder')}} + | + + {{#if showBackend}} ++ {{input type="text" class="input-sm" value=rule.backendName placeholder=(t 'formBalancerRules.backendName.placeholder')}} + | + {{/if}} + + {{#if editing}} +
+ |
+ {{/if}}
+
backend or similar lines which include the IP address of the target container, use $IP where the address goes and {appName} will generate the appropriate line(s).
config:
prompt: Custom haproxy.cfg content
-formBalancerRules:
- label: Port Rules
- detail: 'These properties show the port mapping details of your container'
+
+formBalancerListeners:
+ label: Listeners & Target Rules
+ detail: Control the mapping of requests coming into the balancer to the desired target.
status: |
{count, plural,
=0 {No rules}
=1 {# rule}
other {# rules}
}
- noRules: No Rules
- addServiceLabel: Add Scaling Group Rule
- addSelectorLabel: Add Selector Rule
- target: Target
+ noRules: No Ports
+ addPortLabel: Add a Listening Port
+ removePortLabel: Remove this Listening Port
+ showBackendLabel: "Customize backend names"
access:
label: Access
public: Public
@@ -1936,10 +1937,19 @@ formBalancerRules:
label: Protocol
sourceIp:
label: Host IP
- placeholder: e.g. 1.2.3.4
+ placeholder: "e.g. 1.2.3.4; Default: All"
sourcePort:
- label: Port
+ label: Listening Port
placeholder: e.g. 80
+ help: "Host and Path rules are matched top-to-bottom in the order shown. Backends will be named randomly by default; to customize the generated backends, provide a name and then refer to that name in your custom haproxy.cfg."
+
+formBalancerRules:
+ label: Target Rules
+ noRules: No Rules
+ addServiceLabel: Add a Service
+ addInstanceLabel: Add a Container
+ addSelectorLabel: Add a Selector
+ addTargetLabel: Add a Rule
path:
label: Path
placeholder: e.g. /foo
@@ -1956,16 +1966,14 @@ formBalancerRules:
label: Priority
moveUp: Move Up
moveDown: Move Down
- serviceId:
+ target: Target
+ container:
+ label: Container
+ service:
label: Service
selector:
label: Selector
placeholder: e.g. foo=bar
- help:
- prefix: "Host and Path rules are matched top-to-bottom in the order shown. Backends will be named randomly by default; to customize the generated backends, provide a name and then refer to that in the custom haproxy.cfg. "
- showBackendLink: "Show custom backend names."
- showIpLink: "Show host IP address options."
- suffix: ""
formCloudHost:
title: Host
@@ -2101,7 +2109,7 @@ formHealthCheck:
label: Host Header
placeholder: e.g. www.example.com
port:
- label: Port
+ label: Listening Port
placeholder: e.g. 80
initializingTimeout:
label: Initializing Timeout
@@ -2431,7 +2439,7 @@ formStickiness:
indirect: Indirect
sendHeader: Send no-cache header
onPost: Only set cookie on POST
- noPorts: There are no HTTP Port Rules configured.
+ noPorts: There are no HTTP Listeners configured.
placeholder:
sticky: e.g. sticky
@@ -3360,12 +3368,13 @@ newBalancer:
edit: Edit Load Balancer
upgrade: Upgrade Load Balancer
error:
- noRules: "Choose one or more port rules to listen on"
+ noRules: "You must have one or more listening ports and target rules"
noSourcePort: "Source Port is required on each rule"
invalidSourcePort: "Invalid source port: '{num}'"
invalidTargetPort: "Invalid target port: '{num}'"
mixedPort: "Port {num} has multiple rules with conflicting access/protcols"
noTarget: "Target is required on each rule"
+ noTargetPort: "Target Port is required on each rule"
needsCertificate: "A certificate is required because there are SSL/TLS port rules"
newCatalog:
@@ -3614,10 +3623,12 @@ schema:
n: "False"
inputCertificate:
prompt: Choose a Certificate...
+ inputContainer:
+ prompt: Choose a Container...
inputEnum:
option: Choose an option...
inputHost:
- label: Select Host
+ label: Choose a Host...
inputService:
prompt: Choose a Service...
inputSecret: