Merge "Align model with v2 api"
This commit is contained in:
commit
d98eba56db
@ -126,10 +126,10 @@ def create_loadbalancer(request):
|
||||
conn = _get_sdk_connection(request)
|
||||
loadbalancer = conn.load_balancer.create_load_balancer(
|
||||
project_id=request.user.project_id,
|
||||
vip_subnet_id=data['loadbalancer']['subnet'],
|
||||
vip_subnet_id=data['loadbalancer']['vip_subnet_id'],
|
||||
name=data['loadbalancer'].get('name'),
|
||||
description=data['loadbalancer'].get('description'),
|
||||
vip_address=data['loadbalancer'].get('ip'),
|
||||
vip_address=data['loadbalancer'].get('vip_address'),
|
||||
admin_state_up=data['loadbalancer'].get('admin_state_up')
|
||||
)
|
||||
|
||||
@ -162,7 +162,7 @@ def create_listener(request, **kwargs):
|
||||
# https://bugs.launchpad.net/octavia/+bug/1714294
|
||||
listener = conn.load_balancer.create_listener(
|
||||
protocol=data['listener']['protocol'],
|
||||
protocol_port=data['listener']['port'],
|
||||
protocol_port=data['listener']['protocol_port'],
|
||||
load_balancer_id=kwargs['loadbalancer_id'],
|
||||
name=data['listener'].get('name'),
|
||||
description=data['listener'].get('description'),
|
||||
@ -227,23 +227,11 @@ def create_pool(request, **kwargs):
|
||||
"""
|
||||
data = request.DATA
|
||||
|
||||
session_persistence_type = data['pool'].get('type')
|
||||
if session_persistence_type is None:
|
||||
session_persistence = None
|
||||
else:
|
||||
cookie = data['pool'].get('cookie')
|
||||
if session_persistence_type != 'APP_COOKIE':
|
||||
cookie = None
|
||||
session_persistence = {
|
||||
'type': session_persistence_type,
|
||||
'cookie_name': cookie
|
||||
}
|
||||
|
||||
conn = _get_sdk_connection(request)
|
||||
pool = conn.load_balancer.create_pool(
|
||||
protocol=data['pool']['protocol'],
|
||||
lb_algorithm=data['pool']['method'],
|
||||
session_persistence=session_persistence,
|
||||
lb_algorithm=data['pool']['lb_algorithm'],
|
||||
session_persistence=data['pool'].get('session_persistence'),
|
||||
listener_id=kwargs['listener_id'],
|
||||
loadbalancer_id=kwargs['loadbalancer_id'],
|
||||
name=data['pool'].get('name'),
|
||||
@ -273,14 +261,14 @@ def create_health_monitor(request, **kwargs):
|
||||
conn = _get_sdk_connection(request)
|
||||
health_mon = conn.load_balancer.create_health_monitor(
|
||||
type=data['monitor']['type'],
|
||||
delay=data['monitor']['interval'],
|
||||
delay=data['monitor']['delay'],
|
||||
timeout=data['monitor']['timeout'],
|
||||
max_retries=data['monitor']['retry'],
|
||||
max_retries_down=data['monitor']['retry_down'],
|
||||
max_retries=data['monitor']['max_retries'],
|
||||
max_retries_down=data['monitor']['max_retries_down'],
|
||||
pool_id=kwargs['pool_id'],
|
||||
http_method=data['monitor'].get('method'),
|
||||
url_path=data['monitor'].get('path'),
|
||||
expected_codes=data['monitor'].get('status'),
|
||||
http_method=data['monitor'].get('http_method'),
|
||||
url_path=data['monitor'].get('url_path'),
|
||||
expected_codes=data['monitor'].get('expected_codes'),
|
||||
admin_state_up=data['monitor'].get('admin_state_up')
|
||||
)
|
||||
|
||||
@ -311,8 +299,8 @@ def add_member(request, **kwargs):
|
||||
member = conn.load_balancer.create_member(
|
||||
pool_id,
|
||||
address=member['address'],
|
||||
protocol_port=member['port'],
|
||||
subnet_id=member['subnet'],
|
||||
protocol_port=member['protocol_port'],
|
||||
subnet_id=member['subnet_id'],
|
||||
weight=member.get('weight'),
|
||||
monitor_address=monitor_address if monitor_address else None,
|
||||
monitor_port=member.get('monitor_port'),
|
||||
@ -467,23 +455,11 @@ def update_pool(request, **kwargs):
|
||||
pool_id = data['pool'].get('id')
|
||||
loadbalancer_id = data.get('loadbalancer_id')
|
||||
|
||||
session_persistence_type = data['pool'].get('type')
|
||||
if session_persistence_type is None:
|
||||
session_persistence = None
|
||||
else:
|
||||
cookie = data['pool'].get('cookie')
|
||||
if session_persistence_type != 'APP_COOKIE':
|
||||
cookie = None
|
||||
session_persistence = {
|
||||
'type': session_persistence_type,
|
||||
'cookie_name': cookie
|
||||
}
|
||||
|
||||
conn = _get_sdk_connection(request)
|
||||
pool = conn.load_balancer.update_pool(
|
||||
pool=pool_id,
|
||||
lb_algorithm=data['pool']['method'],
|
||||
session_persistence=session_persistence,
|
||||
lb_algorithm=data['pool']['lb_algorithm'],
|
||||
session_persistence=data['pool'].get('session_persistence'),
|
||||
name=data['pool'].get('name'),
|
||||
description=data['pool'].get('description'),
|
||||
admin_state_up=data['pool'].get('admin_state_up')
|
||||
@ -521,13 +497,13 @@ def update_monitor(request, **kwargs):
|
||||
conn = _get_sdk_connection(request)
|
||||
healthmonitor = conn.load_balancer.update_health_monitor(
|
||||
monitor_id,
|
||||
delay=data['monitor'].get('interval'),
|
||||
delay=data['monitor'].get('delay'),
|
||||
timeout=data['monitor'].get('timeout'),
|
||||
max_retries=data['monitor'].get('retry'),
|
||||
max_retries_down=data['monitor'].get('retry_down'),
|
||||
http_method=data['monitor'].get('method'),
|
||||
url_path=data['monitor'].get('path'),
|
||||
expected_codes=data['monitor'].get('status'),
|
||||
max_retries=data['monitor'].get('max_retries'),
|
||||
max_retries_down=data['monitor'].get('max_retries_down'),
|
||||
http_method=data['monitor'].get('http_method'),
|
||||
url_path=data['monitor'].get('url_path'),
|
||||
expected_codes=data['monitor'].get('expected_codes'),
|
||||
admin_state_up=data['monitor'].get('admin_state_up')
|
||||
)
|
||||
|
||||
|
@ -163,11 +163,11 @@
|
||||
},
|
||||
monitor_address: {
|
||||
label: gettext('Monitor Address'),
|
||||
filters: ['noName']
|
||||
filters: ['noValue']
|
||||
},
|
||||
monitor_port: {
|
||||
label: gettext('Monitor Port'),
|
||||
filters: ['noName']
|
||||
filters: ['noValue']
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -60,7 +60,7 @@
|
||||
while (listenerPortExists(defaultPort)) {
|
||||
defaultPort += 1;
|
||||
}
|
||||
$scope.model.spec.listener.port = defaultPort;
|
||||
$scope.model.spec.listener.protocol_port = defaultPort;
|
||||
|
||||
var members = $scope.model.members.concat($scope.model.spec.members);
|
||||
members.forEach(function setMemberPort(member) {
|
||||
|
@ -32,7 +32,7 @@
|
||||
};
|
||||
listener = {
|
||||
protocol: null,
|
||||
port: 80
|
||||
protocol_port: 80
|
||||
};
|
||||
scope = {
|
||||
model: {
|
||||
@ -55,17 +55,17 @@
|
||||
|
||||
it('should update port on protocol change to HTTP', function() {
|
||||
ctrl.protocolChange('HTTP');
|
||||
expect(listener.port).toBe(81);
|
||||
expect(listener.protocol_port).toBe(81);
|
||||
});
|
||||
|
||||
it('should update port on protocol change to TERMINATED_HTTPS', function() {
|
||||
ctrl.protocolChange('TERMINATED_HTTPS');
|
||||
expect(listener.port).toBe(443);
|
||||
expect(listener.protocol_port).toBe(443);
|
||||
});
|
||||
|
||||
it('should update port on protocol change to TCP', function() {
|
||||
ctrl.protocolChange('TCP');
|
||||
expect(listener.port).toBeUndefined();
|
||||
expect(listener.protocol_port).toBeUndefined();
|
||||
});
|
||||
|
||||
it('should update member ports on protocol change to TERMINATED_HTTPS', function() {
|
||||
|
@ -47,7 +47,7 @@
|
||||
<span class="hz-icon-required fa fa-asterisk"></span>
|
||||
</label>
|
||||
<input name="port" id="port" type="number" class="form-control"
|
||||
ng-model="model.spec.listener.port" ng-pattern="/^\d+$/" min="1" max="65535"
|
||||
ng-model="model.spec.listener.protocol_port" ng-pattern="/^\d+$/" min="1" max="65535"
|
||||
ng-required="true" ng-disabled="model.context.id"
|
||||
validate-unique="model.listenerPorts">
|
||||
<span class="help-block" ng-show="(listenerDetailsForm.port.$error.number || listenerDetailsForm.port.$error.required) && listenerDetailsForm.port.$dirty">
|
||||
|
@ -28,7 +28,7 @@
|
||||
ng-class="{ 'has-error': loadBalancerDetailsForm.ip.$invalid && loadBalancerDetailsForm.ip.$dirty }">
|
||||
<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-model="model.spec.loadbalancer.vip_address" ng-pattern="::ctrl.ipPattern"
|
||||
ng-disabled="model.context.id">
|
||||
<span class="help-block" ng-show="loadBalancerDetailsForm.ip.$invalid && loadBalancerDetailsForm.ip.$dirty">
|
||||
{$ ::ctrl.ipError $}
|
||||
@ -44,7 +44,7 @@
|
||||
</label>
|
||||
<select class="form-control" name="subnet" id="subnet"
|
||||
ng-options="subnet.name || subnet.id for subnet in model.subnets"
|
||||
ng-model="model.spec.loadbalancer.subnet" ng-required="true"
|
||||
ng-model="model.spec.loadbalancer.vip_subnet_id" ng-required="true"
|
||||
ng-disabled="model.context.id">
|
||||
</select>
|
||||
</div>
|
||||
|
@ -118,8 +118,8 @@
|
||||
$scope.model.spec.members.push({
|
||||
id: memberCounter++,
|
||||
address: null,
|
||||
subnet: null,
|
||||
port: { HTTP: 80 }[protocol],
|
||||
subnet_id: null,
|
||||
protocol_port: { HTTP: 80 }[protocol],
|
||||
weight: 1,
|
||||
monitor_address: null,
|
||||
monitor_port: null,
|
||||
|
@ -34,7 +34,7 @@
|
||||
name: 'foo',
|
||||
description: 'bar',
|
||||
weight: 1,
|
||||
port: 80,
|
||||
protocol_port: 80,
|
||||
address: { ip: '1.2.3.4', subnet: '1' },
|
||||
addresses: [{ ip: '1.2.3.4', subnet: '1' },
|
||||
{ ip: '2.3.4.5', subnet: '2' }]
|
||||
@ -94,7 +94,7 @@
|
||||
expect(model.spec.members.length).toBe(1);
|
||||
expect(model.spec.members[0].id).toBe(0);
|
||||
expect(model.spec.members[0].address).toBeNull();
|
||||
expect(model.spec.members[0].subnet).toBeNull();
|
||||
expect(model.spec.members[0].subnet_id).toBeNull();
|
||||
});
|
||||
|
||||
it('should allocate a given member', function() {
|
||||
@ -102,8 +102,8 @@
|
||||
expect(model.spec.members.length).toBe(1);
|
||||
expect(model.spec.members[0].id).toBe(0);
|
||||
expect(model.spec.members[0].address).toEqual(model.members[0].address);
|
||||
expect(model.spec.members[0].subnet).toBeUndefined();
|
||||
expect(model.spec.members[0].port).toEqual(model.members[0].port);
|
||||
expect(model.spec.members[0].subnet_id).toBeUndefined();
|
||||
expect(model.spec.members[0].protocol_port).toEqual(model.members[0].protocol_port);
|
||||
});
|
||||
|
||||
it('should deallocate a given member', function() {
|
||||
|
@ -68,7 +68,7 @@
|
||||
<div ng-if="!row.addresses" class="form-group required">
|
||||
<select name="{$ ::row.id $}-subnet" class="form-control"
|
||||
ng-options="subnet.name for subnet in model.subnets"
|
||||
ng-model="row.subnet" ng-required="true"
|
||||
ng-model="row.subnet_id" ng-required="true"
|
||||
ng-disabled="row.allocatedMember">
|
||||
</select>
|
||||
</div>
|
||||
@ -78,7 +78,7 @@
|
||||
<div class="form-group required member-port"
|
||||
ng-class="{ 'has-error': memberDetailsForm['{$ ::row.id $}-port'].$invalid && memberDetailsForm['{$ ::row.id $}-port'].$dirty }">
|
||||
<input name="{$ ::row.id $}-port" type="number" class="form-control"
|
||||
ng-model="row.port" ng-pattern="/^\d+$/" min="1" max="65535"
|
||||
ng-model="row.protocol_port" ng-pattern="/^\d+$/" min="1" max="65535"
|
||||
ng-required="true" ng-disabled="row.allocatedMember"
|
||||
popover-placement="top" popover-append-to-body="true"
|
||||
popover-trigger="focus"
|
||||
|
@ -57,8 +57,7 @@
|
||||
novaAPI,
|
||||
lbaasv2API,
|
||||
barbicanAPI,
|
||||
serviceCatalog,
|
||||
gettext
|
||||
serviceCatalog
|
||||
) {
|
||||
var ports, keymanagerPromise;
|
||||
|
||||
@ -82,7 +81,6 @@
|
||||
|
||||
spec: null,
|
||||
|
||||
visibleResources: [],
|
||||
subnets: [],
|
||||
members: [],
|
||||
listenerProtocols: ['HTTP', 'TCP', 'TERMINATED_HTTPS', 'HTTPS'],
|
||||
@ -132,7 +130,6 @@
|
||||
submit: null
|
||||
};
|
||||
|
||||
model.visibleResources = [];
|
||||
model.certificates = [];
|
||||
model.listenerPorts = [];
|
||||
|
||||
@ -142,23 +139,24 @@
|
||||
loadbalancer: {
|
||||
name: null,
|
||||
description: null,
|
||||
ip: null,
|
||||
subnet: null,
|
||||
vip_address: null,
|
||||
vip_subnet_id: null,
|
||||
admin_state_up: true
|
||||
},
|
||||
listener: {
|
||||
id: null,
|
||||
name: gettext('Listener 1'),
|
||||
name: null,
|
||||
description: null,
|
||||
protocol: null,
|
||||
port: null,
|
||||
protocol_port: null,
|
||||
connection_limit: -1,
|
||||
admin_state_up: true,
|
||||
default_pool: null,
|
||||
default_pool_id: null
|
||||
},
|
||||
l7policy: {
|
||||
id: null,
|
||||
name: gettext('L7 Policy 1'),
|
||||
name: null,
|
||||
description: null,
|
||||
action: null,
|
||||
position: null,
|
||||
@ -177,24 +175,27 @@
|
||||
},
|
||||
pool: {
|
||||
id: null,
|
||||
name: gettext('Pool 1'),
|
||||
name: null,
|
||||
description: null,
|
||||
protocol: null,
|
||||
method: null,
|
||||
type: null,
|
||||
cookie: null,
|
||||
lb_algorithm: null,
|
||||
session_persistence: {
|
||||
type: null,
|
||||
cookie_name: null
|
||||
},
|
||||
admin_state_up: true
|
||||
},
|
||||
monitor: {
|
||||
id: null,
|
||||
name: null,
|
||||
type: null,
|
||||
interval: 5,
|
||||
retry: 3,
|
||||
retry_down: 3,
|
||||
delay: 5,
|
||||
max_retries: 3,
|
||||
max_retries_down: 3,
|
||||
timeout: 5,
|
||||
method: 'GET',
|
||||
status: '200',
|
||||
path: '/',
|
||||
http_method: 'GET',
|
||||
expected_codes: '200',
|
||||
url_path: '/',
|
||||
admin_state_up: true
|
||||
},
|
||||
members: [],
|
||||
@ -249,7 +250,6 @@
|
||||
function initCreateLoadBalancer(keymanagerPromise) {
|
||||
model.context.submit = createLoadBalancer;
|
||||
return $q.all([
|
||||
lbaasv2API.getLoadBalancers().then(onGetLoadBalancers),
|
||||
neutronAPI.getSubnets().then(onGetSubnets),
|
||||
neutronAPI.getPorts().then(onGetPorts),
|
||||
novaAPI.getServers().then(onGetServers),
|
||||
@ -436,22 +436,22 @@
|
||||
function cleanFinalSpecLoadBalancer(finalSpec) {
|
||||
var context = model.context;
|
||||
|
||||
// Load balancer requires subnet
|
||||
if (!finalSpec.loadbalancer.subnet) {
|
||||
// Load balancer requires vip_subnet_id
|
||||
if (!finalSpec.loadbalancer.vip_subnet_id) {
|
||||
delete finalSpec.loadbalancer;
|
||||
} else {
|
||||
finalSpec.loadbalancer.subnet = finalSpec.loadbalancer.subnet.id;
|
||||
finalSpec.loadbalancer.vip_subnet_id = finalSpec.loadbalancer.vip_subnet_id.id;
|
||||
}
|
||||
|
||||
// Cannot edit the IP or subnet
|
||||
if (context.resource === 'loadbalancer' && context.id) {
|
||||
delete finalSpec.subnet;
|
||||
delete finalSpec.ip;
|
||||
delete finalSpec.vip_subnet_id;
|
||||
delete finalSpec.vip_address;
|
||||
}
|
||||
}
|
||||
|
||||
function cleanFinalSpecListener(finalSpec) {
|
||||
if (!finalSpec.listener.protocol || !finalSpec.listener.port) {
|
||||
if (!finalSpec.listener.protocol || !finalSpec.listener.protocol_port) {
|
||||
// Listener requires protocol and port
|
||||
delete finalSpec.listener;
|
||||
delete finalSpec.certificates;
|
||||
@ -470,13 +470,20 @@
|
||||
function cleanFinalSpecPool(finalSpec) {
|
||||
|
||||
// Pool requires method
|
||||
if (!finalSpec.pool.method) {
|
||||
if (!finalSpec.pool.lb_algorithm) {
|
||||
delete finalSpec.pool;
|
||||
} else {
|
||||
// The pool protocol must be HTTP if the listener protocol is TERMINATED_HTTPS and
|
||||
// otherwise has to match it.
|
||||
var protocol = finalSpec.listener ? finalSpec.listener.protocol : finalSpec.pool.protocol;
|
||||
finalSpec.pool.protocol = protocol === 'TERMINATED_HTTPS' ? 'HTTP' : protocol;
|
||||
if (angular.isObject(finalSpec.pool.session_persistence)) {
|
||||
if (!finalSpec.pool.session_persistence.type) {
|
||||
finalSpec.pool.session_persistence = null;
|
||||
} else if (finalSpec.pool.session_persistence.type !== 'APP_COOKIE') {
|
||||
finalSpec.pool.session_persistence.cookie_name = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -488,7 +495,7 @@
|
||||
|
||||
var members = [];
|
||||
angular.forEach(finalSpec.members, function cleanMember(member) {
|
||||
if (member.address && member.port) {
|
||||
if (member.address && member.protocol_port) {
|
||||
var propsToRemove = ['name', 'description', 'addresses', 'allocatedMember'];
|
||||
propsToRemove.forEach(function deleteProperty(prop) {
|
||||
if (angular.isDefined(member[prop])) {
|
||||
@ -496,12 +503,12 @@
|
||||
}
|
||||
});
|
||||
if (angular.isObject(member.address)) {
|
||||
member.subnet = member.address.subnet;
|
||||
member.subnet_id = member.address.subnet;
|
||||
member.address = member.address.ip;
|
||||
} else if (member.subnet) {
|
||||
member.subnet = member.subnet.id;
|
||||
} else if (member.subnet_id) {
|
||||
member.subnet_id = member.subnet_id.id;
|
||||
} else {
|
||||
delete member.subnet;
|
||||
delete member.subnet_id;
|
||||
}
|
||||
members.push(member);
|
||||
}
|
||||
@ -515,9 +522,9 @@
|
||||
|
||||
function cleanFinalSpecMonitor(finalSpec) {
|
||||
|
||||
// Monitor requires an interval, retry count, and timeout
|
||||
if (!angular.isNumber(finalSpec.monitor.interval) ||
|
||||
!angular.isNumber(finalSpec.monitor.retry) ||
|
||||
// Monitor requires delay, max_retries, and timeout
|
||||
if (!angular.isNumber(finalSpec.monitor.delay) ||
|
||||
!angular.isNumber(finalSpec.monitor.max_retries) ||
|
||||
!angular.isNumber(finalSpec.monitor.timeout)) {
|
||||
delete finalSpec.monitor;
|
||||
return;
|
||||
@ -525,9 +532,9 @@
|
||||
|
||||
// Only include necessary monitor properties
|
||||
if (finalSpec.monitor.type !== 'HTTP') {
|
||||
delete finalSpec.monitor.method;
|
||||
delete finalSpec.monitor.status;
|
||||
delete finalSpec.monitor.path;
|
||||
delete finalSpec.monitor.http_method;
|
||||
delete finalSpec.monitor.expected_codes;
|
||||
delete finalSpec.monitor.url_path;
|
||||
}
|
||||
}
|
||||
|
||||
@ -541,33 +548,10 @@
|
||||
});
|
||||
}
|
||||
|
||||
function onGetLoadBalancers(response) {
|
||||
var existingNames = {};
|
||||
angular.forEach(response.data.items, function nameExists(lb) {
|
||||
existingNames[lb.name] = 1;
|
||||
});
|
||||
var name;
|
||||
var index = response.data.items.length;
|
||||
do {
|
||||
index += 1;
|
||||
name = interpolate(gettext('Load Balancer %(index)s'), { index: index }, true);
|
||||
} while (name in existingNames);
|
||||
model.spec.loadbalancer.name = name;
|
||||
}
|
||||
|
||||
function onGetListeners(response) {
|
||||
var existingNames = {};
|
||||
angular.forEach(response.data.items, function nameExists(listener) {
|
||||
existingNames[listener.name] = 1;
|
||||
angular.forEach(response.data.items, function addPort(listener) {
|
||||
model.listenerPorts.push(listener.protocol_port);
|
||||
});
|
||||
var name;
|
||||
var index = response.data.items.length;
|
||||
do {
|
||||
index += 1;
|
||||
name = interpolate(gettext('Listener %(index)s'), { index: index }, true);
|
||||
} while (name in existingNames);
|
||||
model.spec.listener.name = name;
|
||||
}
|
||||
|
||||
function onGetPools(response) {
|
||||
@ -634,7 +618,7 @@
|
||||
member.address = member.addresses[0];
|
||||
|
||||
if (model.spec.pool.protocol) {
|
||||
member.port = {HTTP: 80}[model.spec.pool.protocol];
|
||||
member.protocol_port = {HTTP: 80}[model.spec.pool.protocol];
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -675,7 +659,6 @@
|
||||
setListenerSpec(result.listener || result);
|
||||
|
||||
if (result.listener) {
|
||||
model.visibleResources.push('listener');
|
||||
model.spec.loadbalancer_id = result.listener.load_balancers[0].id;
|
||||
|
||||
if (result.listener.protocol === 'TERMINATED_HTTPS') {
|
||||
@ -688,15 +671,12 @@
|
||||
});
|
||||
});
|
||||
});
|
||||
model.visibleResources.push('certificates');
|
||||
$('#wizard-side-nav ul li:last').show();
|
||||
}
|
||||
}
|
||||
|
||||
if (result.pool) {
|
||||
setPoolSpec(result.pool);
|
||||
model.visibleResources.push('pool');
|
||||
model.visibleResources.push('members');
|
||||
|
||||
if (result.members) {
|
||||
setMembersSpec(result.members);
|
||||
@ -704,7 +684,6 @@
|
||||
|
||||
if (result.monitor) {
|
||||
setMonitorSpec(result.monitor);
|
||||
model.visibleResources.push('monitor');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -727,16 +706,12 @@
|
||||
setPoolSpec(result.pool || result);
|
||||
|
||||
if (result.pool) {
|
||||
model.visibleResources.push('pool');
|
||||
model.visibleResources.push('members');
|
||||
|
||||
if (result.members) {
|
||||
setMembersSpec(result.members);
|
||||
}
|
||||
|
||||
if (result.monitor) {
|
||||
setMonitorSpec(result.monitor);
|
||||
model.visibleResources.push('monitor');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -745,8 +720,8 @@
|
||||
var spec = model.spec.loadbalancer;
|
||||
spec.name = loadbalancer.name;
|
||||
spec.description = loadbalancer.description;
|
||||
spec.ip = loadbalancer.vip_address;
|
||||
spec.subnet = loadbalancer.vip_subnet_id;
|
||||
spec.vip_address = loadbalancer.vip_address;
|
||||
spec.vip_subnet_id = loadbalancer.vip_subnet_id;
|
||||
spec.admin_state_up = loadbalancer.admin_state_up;
|
||||
}
|
||||
|
||||
@ -756,7 +731,7 @@
|
||||
spec.name = listener.name;
|
||||
spec.description = listener.description;
|
||||
spec.protocol = listener.protocol;
|
||||
spec.port = listener.protocol_port;
|
||||
spec.protocol_port = listener.protocol_port;
|
||||
spec.connection_limit = listener.connection_limit;
|
||||
spec.admin_state_up = listener.admin_state_up;
|
||||
spec.default_pool_id = listener.default_pool_id;
|
||||
@ -791,18 +766,9 @@
|
||||
spec.name = pool.name;
|
||||
spec.description = pool.description;
|
||||
spec.protocol = pool.protocol;
|
||||
spec.method = pool.lb_algorithm;
|
||||
spec.lb_algorithm = pool.lb_algorithm;
|
||||
spec.admin_state_up = pool.admin_state_up;
|
||||
if (angular.isObject(pool.session_persistence)) {
|
||||
var type = pool.session_persistence.type;
|
||||
var cookie = pool.session_persistence.cookie_name;
|
||||
if (type) {
|
||||
spec.type = type;
|
||||
}
|
||||
if (type === 'APP_COOKIE' && cookie) {
|
||||
spec.cookie = cookie;
|
||||
}
|
||||
}
|
||||
spec.session_persistence = pool.session_persistence;
|
||||
}
|
||||
|
||||
function setMembersSpec(membersList) {
|
||||
@ -813,8 +779,8 @@
|
||||
members.push({
|
||||
id: member.id,
|
||||
address: member.address,
|
||||
subnet: mapSubnetObj(member.subnet_id),
|
||||
port: member.protocol_port,
|
||||
subnet_id: mapSubnetObj(member.subnet_id),
|
||||
protocol_port: member.protocol_port,
|
||||
weight: member.weight,
|
||||
monitor_address: member.monitor_address,
|
||||
monitor_port: member.monitor_port,
|
||||
@ -829,13 +795,13 @@
|
||||
var spec = model.spec.monitor;
|
||||
spec.id = monitor.id;
|
||||
spec.type = monitor.type;
|
||||
spec.interval = monitor.delay;
|
||||
spec.delay = monitor.delay;
|
||||
spec.timeout = monitor.timeout;
|
||||
spec.retry = monitor.max_retries;
|
||||
spec.retry_down = monitor.max_retries_down;
|
||||
spec.method = monitor.http_method;
|
||||
spec.status = monitor.expected_codes;
|
||||
spec.path = monitor.url_path;
|
||||
spec.max_retries = monitor.max_retries;
|
||||
spec.max_retries_down = monitor.max_retries_down;
|
||||
spec.http_method = monitor.http_method;
|
||||
spec.expected_codes = monitor.expected_codes;
|
||||
spec.url_path = monitor.url_path;
|
||||
spec.admin_state_up = monitor.admin_state_up;
|
||||
}
|
||||
|
||||
@ -884,9 +850,9 @@
|
||||
|
||||
function initSubnet() {
|
||||
var subnet = model.subnets.filter(function filterSubnetsByLoadBalancer(s) {
|
||||
return s.id === model.spec.loadbalancer.subnet;
|
||||
return s.id === model.spec.loadbalancer.vip_subnet_id;
|
||||
})[0];
|
||||
model.spec.loadbalancer.subnet = subnet;
|
||||
model.spec.loadbalancer.vip_subnet_id = subnet;
|
||||
}
|
||||
|
||||
function mapSubnetObj(subnetId) {
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -5,20 +5,20 @@
|
||||
monitor.
|
||||
</p>
|
||||
<p>
|
||||
<strong translate>Interval:</strong>
|
||||
<strong translate>Delay:</strong>
|
||||
<translate>
|
||||
The interval between health checks. Must be greater than or equal to the timeout.
|
||||
</translate>
|
||||
</p>
|
||||
<p>
|
||||
<strong translate>Retries:</strong>
|
||||
<strong translate>Max Retries:</strong>
|
||||
<translate>
|
||||
The number of allowed connection failures before marking the member as inactive. Must be a
|
||||
number from 1 to 10.
|
||||
</translate>
|
||||
</p>
|
||||
<p>
|
||||
<strong translate>Retries down:</strong>
|
||||
<strong translate>Max Retries Down:</strong>
|
||||
<translate>
|
||||
The number of allowed connection failures before marking the member as error. Must be a
|
||||
number from 1 to 10. The default is 3.
|
||||
@ -32,20 +32,20 @@
|
||||
</translate>
|
||||
</p>
|
||||
<p>
|
||||
<strong translate>HTTP method:</strong>
|
||||
<strong translate>HTTP Method:</strong>
|
||||
<translate>
|
||||
The HTTP method used to perform the health check.
|
||||
</translate>
|
||||
</p>
|
||||
<p>
|
||||
<strong translate>Expected status codes:</strong>
|
||||
<strong translate>Expected Codes:</strong>
|
||||
<translate>
|
||||
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).
|
||||
</translate>
|
||||
</p>
|
||||
<p>
|
||||
<strong translate>URL path:</strong>
|
||||
<strong translate>URL Path:</strong>
|
||||
<translate>
|
||||
The target of the health check HTTP request to the member. Must be a valid URL path.
|
||||
</translate>
|
||||
|
@ -6,7 +6,7 @@
|
||||
<div class="col-xs-12 col-sm-8 col-md-6 col-lg-4">
|
||||
<div class="form-group required">
|
||||
<label class="control-label" for="type">
|
||||
<translate>Monitor type</translate>
|
||||
<translate>Type</translate>
|
||||
<span class="hz-icon-required fa fa-asterisk"></span>
|
||||
</label>
|
||||
<select class="form-control" name="type" id="type"
|
||||
@ -21,11 +21,11 @@
|
||||
<div class="form-group required"
|
||||
ng-class="{ 'has-error': monitorDetailsForm.retry_down.$invalid && monitorDetailsForm.retry_down.$dirty }">
|
||||
<label class="control-label" for="retry_down">
|
||||
<translate>Retries down</translate>
|
||||
<translate>Max Retries Down</translate>
|
||||
<span class="hz-icon-required fa fa-asterisk"></span>
|
||||
</label>
|
||||
<input name="retry_down" id="retry_down" type="number" class="form-control"
|
||||
ng-model="model.spec.monitor.retry_down" ng-pattern="/^\d+$/" min="1" max="10"
|
||||
ng-model="model.spec.monitor.max_retries_down" ng-pattern="/^\d+$/" min="1" max="10"
|
||||
ng-required="true">
|
||||
<span class="help-block" ng-show="monitorDetailsForm.retry_down.$invalid && monitorDetailsForm.retry_down.$dirty">
|
||||
{$ ::ctrl.retryDownError $}
|
||||
@ -41,11 +41,11 @@
|
||||
<div class="form-group required"
|
||||
ng-class="{ 'has-error': monitorDetailsForm.interval.$invalid && monitorDetailsForm.interval.$dirty }">
|
||||
<label class="control-label" for="interval">
|
||||
<translate>Interval (sec)</translate>
|
||||
<translate>Delay (sec)</translate>
|
||||
<span class="hz-icon-required fa fa-asterisk"></span>
|
||||
</label>
|
||||
<input name="interval" id="interval" type="number" class="form-control"
|
||||
ng-model="model.spec.monitor.interval" ng-pattern="/^\d+$/"
|
||||
ng-model="model.spec.monitor.delay" ng-pattern="/^\d+$/"
|
||||
ng-min="model.spec.monitor.timeout" ng-required="true">
|
||||
<span class="help-block" ng-show="monitorDetailsForm.interval.$invalid && monitorDetailsForm.interval.$dirty">
|
||||
{$ ::ctrl.intervalError $}
|
||||
@ -57,11 +57,11 @@
|
||||
<div class="form-group required"
|
||||
ng-class="{ 'has-error': monitorDetailsForm.retry.$invalid && monitorDetailsForm.retry.$dirty }">
|
||||
<label class="control-label" for="retry">
|
||||
<translate>Retries</translate>
|
||||
<translate>Max Retries</translate>
|
||||
<span class="hz-icon-required fa fa-asterisk"></span>
|
||||
</label>
|
||||
<input name="retry" id="retry" type="number" class="form-control"
|
||||
ng-model="model.spec.monitor.retry" ng-pattern="/^\d+$/" min="1" max="10"
|
||||
ng-model="model.spec.monitor.max_retries" ng-pattern="/^\d+$/" min="1" max="10"
|
||||
ng-required="true">
|
||||
<span class="help-block" ng-show="monitorDetailsForm.retry.$invalid && monitorDetailsForm.retry.$dirty">
|
||||
{$ ::ctrl.retryError $}
|
||||
@ -91,10 +91,10 @@
|
||||
|
||||
<div class="col-xs-12 col-sm-8 col-md-6 col-lg-4">
|
||||
<div class="form-group">
|
||||
<label translate class="control-label" for="method">HTTP method</label>
|
||||
<label translate class="control-label" for="method">HTTP Method</label>
|
||||
<select class="form-control" name="method" id="method"
|
||||
ng-options="method for method in model.monitorMethods"
|
||||
ng-model="model.spec.monitor.method">
|
||||
ng-model="model.spec.monitor.http_method">
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
@ -102,9 +102,9 @@
|
||||
<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 status codes</label>
|
||||
<label translate class="control-label" for="status">Expected Codes</label>
|
||||
<input name="status" id="status" type="text" class="form-control"
|
||||
ng-model="model.spec.monitor.status" ng-pattern="::ctrl.statusPattern">
|
||||
ng-model="model.spec.monitor.expected_codes" ng-pattern="::ctrl.statusPattern">
|
||||
<span class="help-block" ng-show="monitorDetailsForm.status.$invalid && monitorDetailsForm.status.$dirty">
|
||||
{$ ::ctrl.statusError $}
|
||||
</span>
|
||||
@ -114,9 +114,9 @@
|
||||
<div class="col-xs-12 col-sm-8 col-md-6 col-lg-4">
|
||||
<div class="form-group"
|
||||
ng-class="{ 'has-error': monitorDetailsForm.path.$invalid && monitorDetailsForm.path.$dirty }">
|
||||
<label translate class="control-label" for="path">URL path</label>
|
||||
<label translate class="control-label" for="path">URL Path</label>
|
||||
<input name="path" id="path" type="text" class="form-control"
|
||||
ng-model="model.spec.monitor.path" ng-pattern="::ctrl.urlPathPattern">
|
||||
ng-model="model.spec.monitor.url_path" ng-pattern="::ctrl.urlPathPattern">
|
||||
<span class="help-block" ng-show="monitorDetailsForm.path.$invalid && monitorDetailsForm.path.$dirty">
|
||||
{$ ::ctrl.pathError $}
|
||||
</span>
|
||||
|
@ -31,7 +31,7 @@
|
||||
</label>
|
||||
<select class="form-control" name="method" id="method"
|
||||
ng-options="method for method in model.methods"
|
||||
ng-model="model.spec.pool.method"
|
||||
ng-model="model.spec.pool.lb_algorithm"
|
||||
ng-required="true">
|
||||
</select>
|
||||
</div>
|
||||
@ -64,17 +64,17 @@
|
||||
</label>
|
||||
<select class="form-control" name="type" id="type"
|
||||
ng-options="type for type in model.types"
|
||||
ng-model="model.spec.pool.type">
|
||||
ng-model="model.spec.pool.session_persistence.type">
|
||||
<option value="">None</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-12 col-sm-8 col-md-6" ng-if="model.spec.pool.type === 'APP_COOKIE'">
|
||||
<div class="col-xs-12 col-sm-8 col-md-6" ng-if="model.spec.pool.session_persistence.type === 'APP_COOKIE'">
|
||||
<div class="form-group">
|
||||
<label translate class="control-label" for="cookie">Cookie</label>
|
||||
<input name="cookie" id="cookie" type="text" class="form-control"
|
||||
ng-model="model.spec.pool.cookie">
|
||||
<label translate class="control-label" for="cookie_name">Cookie Name</label>
|
||||
<input name="cookie_name" id="cookie_name" type="text" class="form-control"
|
||||
ng-model="model.spec.pool.session_persistence.cookie_name">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user