Merge "Update load balancer wizard help"
This commit is contained in:
commit
463b1907c4
|
@ -29,22 +29,15 @@
|
|||
}
|
||||
|
||||
/* The IP addresses list displayed when hovering over the IP address in the
|
||||
available instances table. */
|
||||
.addresses-popover + .popover {
|
||||
available instances table, and any lists in the help panels. */
|
||||
.addresses-popover + .popover,
|
||||
#help-panel {
|
||||
ul {
|
||||
list-style-type: disc;
|
||||
padding-left: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Popover help icons for fields in the wizard */
|
||||
.form-group {
|
||||
span.fa-exclamation-triangle,
|
||||
span.fa-question-circle {
|
||||
color: $gray-light;
|
||||
}
|
||||
}
|
||||
|
||||
/* Pool Members tab */
|
||||
[ng-form="memberDetailsForm"] {
|
||||
.transfer-section:first-child {
|
||||
|
|
|
@ -1,5 +1,20 @@
|
|||
<p translate>
|
||||
If the listener uses the TERMINATED_HTTPS protocol, then one or more SSL certificates must
|
||||
be selected. The first certificate will be the default. Use the key-manager service to create
|
||||
any certificate containers before creating the listener.
|
||||
be selected. The first certificate will be the default.
|
||||
</p>
|
||||
<p translate>
|
||||
Use the key-manager service to create any certificate containers before creating the listener.
|
||||
The following documentation provides information on how to create a certificate container:
|
||||
<ul>
|
||||
<li>
|
||||
<a target="_blank" href="http://developer.openstack.org/api-guide/key-manager/containers.html#certificate-containers">
|
||||
Key Manager API Guide: Creating a Certificate Container
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a target="_blank" href="http://docs.openstack.org/cli-reference/barbican.html">
|
||||
Key Manager Service Command-Line Client
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
|
|
@ -44,8 +44,6 @@
|
|||
ctrl.portNumberError = gettext('The port must be a number between 1 and 65535.');
|
||||
ctrl.portUniqueError = gettext(
|
||||
'The port must be unique among all listeners attached to this load balancer.');
|
||||
ctrl.certificatesError = gettext('There was an error obtaining certificates from the ' +
|
||||
'key-manager service. The TERMINATED_HTTPS protocol is unavailable.');
|
||||
|
||||
////////////
|
||||
|
||||
|
|
|
@ -52,7 +52,6 @@
|
|||
it('should define error messages for invalid fields', function() {
|
||||
expect(ctrl.portNumberError).toBeDefined();
|
||||
expect(ctrl.portUniqueError).toBeDefined();
|
||||
expect(ctrl.certificatesError).toBeDefined();
|
||||
});
|
||||
|
||||
it('should show certificates step if selecting TERMINATED_HTTPS', function() {
|
||||
|
|
|
@ -1,8 +1,15 @@
|
|||
<p translate>
|
||||
A listener represents a listening endpoint for a load balancer. A single load balancer can
|
||||
have multiple listeners.
|
||||
Each port that listens for traffic on a particular load balancer is configured separately and
|
||||
tied to the load balancer. Multiple listeners can be associated with the same load balancer but
|
||||
each must use a unique port.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>NOTE:</strong> The TERMINATED_HTTPS protocol is only available if the key-manager
|
||||
service is enabled and you have authority to list certificate containers and secrets.
|
||||
<strong>Protocol:</strong>
|
||||
The protocol for which the front end listens. The TERMINATED_HTTPS protocol is only available if
|
||||
the key-manager service is enabled and you have authority to list certificate containers and
|
||||
secrets.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Port:</strong>
|
||||
The port on which the front end listens. Must be an integer from 1 to 65535.
|
||||
</p>
|
||||
|
|
|
@ -29,11 +29,6 @@
|
|||
Protocol
|
||||
<span class="hz-icon-required fa fa-asterisk"></span>
|
||||
</label>
|
||||
<span class="fa fa-exclamation-triangle invalid"
|
||||
ng-show="model.certificatesError"
|
||||
popover="{$ ::ctrl.certificatesError $}"
|
||||
popover-placement="top" popover-append-to-body="true"
|
||||
popover-trigger="hover"></span>
|
||||
<select class="form-control" name="protocol" id="protocol"
|
||||
ng-model="model.spec.listener.protocol" ng-required="true"
|
||||
ng-change="ctrl.protocolChange(model.spec.listener.protocol)"
|
||||
|
|
|
@ -1,5 +1,13 @@
|
|||
<p translate>
|
||||
The subnet is the network on which to allocate the load balancer's IP address. If an IP
|
||||
address is provided it must be a well-formed IPv4 or IPv6 address. The system will attempt
|
||||
to assign the provided IP address to the load balancer.
|
||||
The load balancer occupies a neutron network port and has an IP address assigned from a subnet.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>IP address:</strong>
|
||||
If an IP address is provided it must be a well-formed IPv4 or IPv6 address. The system will
|
||||
attempt to assign the provided IP address to the load balancer. If an IP address is not provided
|
||||
then one will be allocated for you.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Subnet:</strong>
|
||||
The network on which to allocate the load balancer's IP address.
|
||||
</p>
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<div class="col-xs-12 col-sm-8 col-md-6">
|
||||
<div class="form-group"
|
||||
ng-class="{ 'has-error': loadBalancerDetailsForm.ip.$invalid && loadBalancerDetailsForm.ip.$dirty }">
|
||||
<label translate class="control-label" for="ip">IP Address</label>
|
||||
<label translate class="control-label" for="ip">IP address</label>
|
||||
<input name="ip" id="ip" type="text" class="form-control"
|
||||
ng-model="model.spec.loadbalancer.ip" ng-pattern="::ctrl.ipPattern"
|
||||
ng-disabled="model.context.id">
|
||||
|
|
|
@ -1,8 +1,28 @@
|
|||
<p translate>
|
||||
The Available Instances table contains existing instances that can be added as members of
|
||||
the pool. Use the "Add external member" button to add a member not found in the Available
|
||||
Members are the actual IP addresses that will receive traffic from the load balancer. Each
|
||||
member must have a unique combination of IP address and port.
|
||||
</p>
|
||||
<p translate>
|
||||
The Available Instances table contains existing compute instances that can be added as members
|
||||
of the pool. Use the "Add external member" button to add a member not found in the Available
|
||||
Instances table.
|
||||
</p>
|
||||
<p translate>
|
||||
Each member must have a unique combination of IP address and port.
|
||||
<strong>IP address:</strong>
|
||||
The IP address of the member to receive traffic from the load balancer. Must be a well-formed
|
||||
IPv4 or IPv6 address.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Subnet:</strong>
|
||||
The network which contains the IP address of the member.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Port:</strong>
|
||||
The port on which the member listens for traffic. Must be a number from 1 to 65535.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Weight:</strong>
|
||||
The weight of a member determines the portion of requests or connections it services compared
|
||||
to the other members of the pool. A higher weight means it will receive more traffic. Must be
|
||||
a number from 1 to 256.
|
||||
</p>
|
||||
|
|
|
@ -49,16 +49,6 @@
|
|||
ctrl.statusError = gettext('The expected status code is not valid.');
|
||||
ctrl.pathError = gettext('The URL path is not valid.');
|
||||
|
||||
// Field level help text
|
||||
ctrl.statusHelp = gettext('Must be one of a single value, a comma separated list, or a range.');
|
||||
ctrl.intervalHelp = gettext('The delay between health check calls.');
|
||||
ctrl.retryHelp = interpolate(
|
||||
/* eslint-disable max-len */
|
||||
gettext('The number of allowed connection failures before changing the status of the member to %(state)s.'),
|
||||
/* eslint-enable max-len */
|
||||
{ state: gettext('Inactive') },
|
||||
true);
|
||||
|
||||
// HTTP status codes validation pattern
|
||||
ctrl.statusPattern = patterns.httpStatusCodes;
|
||||
ctrl.urlPathPattern = patterns.urlPath;
|
||||
|
|
|
@ -36,12 +36,6 @@
|
|||
expect(ctrl.pathError).toBeDefined();
|
||||
});
|
||||
|
||||
it('should define field level help messages', function() {
|
||||
expect(ctrl.statusHelp).toBeDefined();
|
||||
expect(ctrl.intervalHelp).toBeDefined();
|
||||
expect(ctrl.retryHelp).toBeDefined();
|
||||
});
|
||||
|
||||
it('should define patterns for field validation', function() {
|
||||
expect(ctrl.statusPattern).toBeDefined();
|
||||
expect(ctrl.urlPathPattern).toBeDefined();
|
||||
|
|
|
@ -1,5 +1,33 @@
|
|||
<p translate>
|
||||
The health monitor is used to determine the health of your pool members. Health checks
|
||||
routinely run against each member within the pool and the result of the health check is used
|
||||
to determine if the member receives new connections.
|
||||
to determine if the member receives new connections. Each pool can only have one health
|
||||
monitor.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Interval:</strong>
|
||||
The interval between health checks. Must be greater than or equal to the timeout.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Retries:</strong>
|
||||
The number of allowed connection failures before marking the member as inactive. Must be a
|
||||
number from 1 to 10.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Timeout:</strong>
|
||||
The time after which a health check times out. Must be a number greater than or equal to 0
|
||||
and less than or equal to the interval.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>HTTP method:</strong>
|
||||
The HTTP method used to perform the health check.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Expected status codes:</strong>
|
||||
The expected HTTP status codes to get from a successful health check. Must be a single number,
|
||||
a comma separated list of numbers, or a range (two numbers separated by a hyphen).
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>URL path:</strong>
|
||||
The target of the health check HTTP request to the member. Must be a valid URL path.
|
||||
</p>
|
||||
|
|
|
@ -25,13 +25,9 @@
|
|||
<div class="form-group required"
|
||||
ng-class="{ 'has-error': monitorDetailsForm.interval.$invalid && monitorDetailsForm.interval.$dirty }">
|
||||
<label translate class="control-label" for="interval">
|
||||
Health check interval (sec)
|
||||
Interval (sec)
|
||||
<span class="hz-icon-required fa fa-asterisk"></span>
|
||||
</label>
|
||||
<span class="fa fa-question-circle pull-right"
|
||||
popover="{$ ::ctrl.intervalHelp $}"
|
||||
popover-placement="top" popover-append-to-body="true"
|
||||
popover-trigger="hover"></span>
|
||||
<input name="interval" id="interval" type="number" class="form-control"
|
||||
ng-model="model.spec.monitor.interval" ng-pattern="/^\d+$/"
|
||||
ng-min="model.spec.monitor.timeout" ng-required="true">
|
||||
|
@ -45,13 +41,9 @@
|
|||
<div class="form-group required"
|
||||
ng-class="{ 'has-error': monitorDetailsForm.retry.$invalid && monitorDetailsForm.retry.$dirty }">
|
||||
<label translate class="control-label" for="retry">
|
||||
Retry count before markdown
|
||||
Retries
|
||||
<span class="hz-icon-required fa fa-asterisk"></span>
|
||||
</label>
|
||||
<span class="fa fa-question-circle pull-right"
|
||||
popover="{$ ::ctrl.retryHelp $}"
|
||||
popover-placement="top" popover-append-to-body="true"
|
||||
popover-trigger="hover"></span>
|
||||
<input name="retry" id="retry" type="number" class="form-control"
|
||||
ng-model="model.spec.monitor.retry" ng-pattern="/^\d+$/" min="1" max="10"
|
||||
ng-required="true">
|
||||
|
@ -94,11 +86,7 @@
|
|||
<div class="col-xs-12 col-sm-8 col-md-6 col-lg-4">
|
||||
<div class="form-group"
|
||||
ng-class="{ 'has-error': monitorDetailsForm.status.$invalid && monitorDetailsForm.status.$dirty }">
|
||||
<label translate class="control-label" for="status">Expected HTTP status code</label>
|
||||
<span class="fa fa-question-circle pull-right"
|
||||
popover="{$ ::ctrl.statusHelp $}"
|
||||
popover-placement="top" popover-append-to-body="true"
|
||||
popover-trigger="hover"></span>
|
||||
<label translate class="control-label" for="status">Expected status codes</label>
|
||||
<input name="status" id="status" type="text" class="form-control"
|
||||
ng-model="model.spec.monitor.status" ng-pattern="::ctrl.statusPattern"
|
||||
ng-disabled="model.context.id">
|
||||
|
|
|
@ -1,3 +1,19 @@
|
|||
<p translate>
|
||||
A pool represents a group of members over which the load balancing will be applied.
|
||||
</p>
|
||||
<p translate>
|
||||
<strong>Method:</strong>
|
||||
The load balancer algorithm that distributes traffic to the pool members.
|
||||
<ul>
|
||||
<li>
|
||||
LEAST_CONNECTIONS: Allocates requests to the instance with the least number of active
|
||||
connections.
|
||||
</li>
|
||||
<li>
|
||||
ROUND_ROBIN: Rotates requests evenly between multiple instances.
|
||||
</li>
|
||||
<li>
|
||||
SOURCE_IP: Requests from a unique source IP address are consistently directed to the same instance.
|
||||
</li>
|
||||
</ul>
|
||||
</p>
|
||||
|
|
Loading…
Reference in New Issue