diff --git a/octavia_dashboard/static/dashboard/project/lbaasv2/workflow/model.service.js b/octavia_dashboard/static/dashboard/project/lbaasv2/workflow/model.service.js index 4658ed1c..cb2d8d80 100644 --- a/octavia_dashboard/static/dashboard/project/lbaasv2/workflow/model.service.js +++ b/octavia_dashboard/static/dashboard/project/lbaasv2/workflow/model.service.js @@ -886,6 +886,7 @@ }); return 'certificate' in container.refs && 'private_key' in container.refs; }); + var certHrefs = []; var secrets = {}; results[1].data.items.forEach(function addSecret(secret) { secrets[secret.secret_ref] = secret; @@ -897,7 +898,23 @@ name: secret.name || secret.secret_ref.split('/').reverse()[0], expiration: secret.expiration }); + certHrefs.push(secret.secret_ref); }); + // Octavia now supports pkcs12 bundles which are stored as secrets. + // If the secret hasn't already been loaded, add it to the list. + for (var key in secrets) { + if (secrets[key].secret_type !== "opaque") {continue;} + var cert = { + id: key, + name: secrets[key].name || key, + expiration: secrets[key].expiration + }; + if (certHrefs.indexOf(key) === -1) { + certificates.push(cert); + certHrefs.push(key); + } + } + push.apply(model.certificates, certificates); } diff --git a/octavia_dashboard/static/dashboard/project/lbaasv2/workflow/model.service.spec.js b/octavia_dashboard/static/dashboard/project/lbaasv2/workflow/model.service.spec.js index 97e54e6b..0e2622ff 100644 --- a/octavia_dashboard/static/dashboard/project/lbaasv2/workflow/model.service.spec.js +++ b/octavia_dashboard/static/dashboard/project/lbaasv2/workflow/model.service.spec.js @@ -342,11 +342,15 @@ secret_ref: 'certificate1' }, { expiration: '2016-03-28T21:10:45.417835', - secret_ref: 'certificate2' + secret_ref: 'certificate2', + secret_type: 'opaque' }, { secret_ref: 'privatekey1' }, { secret_ref: 'privatekey2' + }, { + secret_ref: 'pkcs12', + secret_type: 'opaque' } ]; @@ -512,7 +516,7 @@ expect(model.networks).toEqual(mockNetworks); expect(model.flavors).toEqual(mockFlavors); expect(model.members.length).toBe(2); - expect(model.certificates.length).toBe(2); + expect(model.certificates.length).toBe(3); expect(model.listenerPorts.length).toBe(0); expect(model.spec).toBeDefined(); expect(model.spec.loadbalancer_id).toBeUndefined(); @@ -550,7 +554,7 @@ expect(model.initialized).toBe(true); expect(model.subnets.length).toBe(2); expect(model.members.length).toBe(2); - expect(model.certificates.length).toBe(2); + expect(model.certificates.length).toBe(3); expect(model.listenerPorts.length).toBe(3); expect(model.spec).toBeDefined(); expect(model.spec.loadbalancer_id).toBe('1234'); @@ -1230,7 +1234,7 @@ }); it('should initialize certificates', function() { - expect(model.certificates.length).toBe(2); + expect(model.certificates.length).toBe(3); expect(model.spec.certificates.length).toBe(1); expect(model.spec.certificates[0].id).toBe('container2'); });