Added panels for Tatu PATs and SSH Host info.
This commit is contained in:
parent
841f4e57fe
commit
a82ccdb3e6
@ -19,7 +19,7 @@ from openstack_dashboard.dashboards.project import dashboard
|
|||||||
|
|
||||||
|
|
||||||
class Host(horizon.Panel):
|
class Host(horizon.Panel):
|
||||||
name = _("Host Certificates")
|
name = _("Hosts")
|
||||||
slug = 'tatu_host'
|
slug = 'tatu_host'
|
||||||
|
|
||||||
dashboard.Project.register(Host)
|
dashboard.Project.register(Host)
|
||||||
|
0
tatudashboard/dashboards/tatu/host_cert/__init__.py
Normal file
0
tatudashboard/dashboards/tatu/host_cert/__init__.py
Normal file
25
tatudashboard/dashboards/tatu/host_cert/panel.py
Normal file
25
tatudashboard/dashboards/tatu/host_cert/panel.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Copyright (c) 2016 Huawei, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
import horizon
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from openstack_dashboard.dashboards.project import dashboard
|
||||||
|
|
||||||
|
|
||||||
|
class HostCert(horizon.Panel):
|
||||||
|
name = _("Host Certificates")
|
||||||
|
slug = 'tatu_host_cert'
|
||||||
|
|
||||||
|
dashboard.Project.register(HostCert)
|
21
tatudashboard/dashboards/tatu/host_cert/urls.py
Normal file
21
tatudashboard/dashboards/tatu/host_cert/urls.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Copyright (c) 2016 Huawei, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from django.conf.urls import url
|
||||||
|
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
url('', views.IndexView.as_view(), name='index'),
|
||||||
|
]
|
19
tatudashboard/dashboards/tatu/host_cert/views.py
Normal file
19
tatudashboard/dashboards/tatu/host_cert/views.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Copyright (c) 2016 Huawei, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from django.views import generic
|
||||||
|
|
||||||
|
|
||||||
|
class IndexView(generic.TemplateView):
|
||||||
|
template_name = 'angular.html'
|
0
tatudashboard/dashboards/tatu/pat/__init__.py
Normal file
0
tatudashboard/dashboards/tatu/pat/__init__.py
Normal file
25
tatudashboard/dashboards/tatu/pat/panel.py
Normal file
25
tatudashboard/dashboards/tatu/pat/panel.py
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
# Copyright (c) 2016 Huawei, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
import horizon
|
||||||
|
from django.utils.translation import ugettext_lazy as _
|
||||||
|
|
||||||
|
from openstack_dashboard.dashboards.project import dashboard
|
||||||
|
|
||||||
|
|
||||||
|
class PAT(horizon.Panel):
|
||||||
|
name = _("PAT Gateways")
|
||||||
|
slug = 'tatu_pat'
|
||||||
|
|
||||||
|
dashboard.Project.register(PAT)
|
21
tatudashboard/dashboards/tatu/pat/urls.py
Normal file
21
tatudashboard/dashboards/tatu/pat/urls.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
# Copyright (c) 2016 Huawei, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from django.conf.urls import url
|
||||||
|
|
||||||
|
from . import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
url('', views.IndexView.as_view(), name='index'),
|
||||||
|
]
|
19
tatudashboard/dashboards/tatu/pat/views.py
Normal file
19
tatudashboard/dashboards/tatu/pat/views.py
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# Copyright (c) 2016 Huawei, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
from django.views import generic
|
||||||
|
|
||||||
|
|
||||||
|
class IndexView(generic.TemplateView):
|
||||||
|
template_name = 'angular.html'
|
26
tatudashboard/enabled/_3984_tatu_pat_panel.py
Normal file
26
tatudashboard/enabled/_3984_tatu_pat_panel.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Copyright (c) 2017 Huawei, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
PANEL = 'tatu_pat'
|
||||||
|
PANEL_GROUP = 'tatu'
|
||||||
|
PANEL_DASHBOARD = 'project'
|
||||||
|
|
||||||
|
# If set to True, this dashboard will not be added to the settings.
|
||||||
|
DISABLED = False
|
||||||
|
|
||||||
|
ADD_PANEL = 'tatudashboard.dashboards.tatu.pat.panel.PAT'
|
||||||
|
|
||||||
|
ADD_ANGULAR_MODULES = ['tatudashboard']
|
||||||
|
|
||||||
|
AUTO_DISCOVER_STATIC_FILES = True
|
26
tatudashboard/enabled/_3985_tatu_host_cert_panel.py
Normal file
26
tatudashboard/enabled/_3985_tatu_host_cert_panel.py
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Copyright (c) 2017 Huawei, Inc.
|
||||||
|
#
|
||||||
|
# Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
# not use this file except in compliance with the License. You may obtain
|
||||||
|
# a copy of the License at
|
||||||
|
#
|
||||||
|
# http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
#
|
||||||
|
# Unless required by applicable law or agreed to in writing, software
|
||||||
|
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
# License for the specific language governing permissions and limitations
|
||||||
|
# under the License.
|
||||||
|
|
||||||
|
PANEL = 'tatu_host_cert'
|
||||||
|
PANEL_GROUP = 'tatu'
|
||||||
|
PANEL_DASHBOARD = 'project'
|
||||||
|
|
||||||
|
# If set to True, this dashboard will not be added to the settings.
|
||||||
|
DISABLED = False
|
||||||
|
|
||||||
|
ADD_PANEL = 'tatudashboard.dashboards.tatu.host.panel.HostCert'
|
||||||
|
|
||||||
|
ADD_ANGULAR_MODULES = ['tatudashboard']
|
||||||
|
|
||||||
|
AUTO_DISCOVER_STATIC_FILES = True
|
4
tatudashboard/static/tatudashboard/host_cert.html
Normal file
4
tatudashboard/static/tatudashboard/host_cert.html
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<hz-resource-panel resource-type-name="OS::Tatu::HostCert">
|
||||||
|
<hz-resource-table resource-type-name="OS::Tatu::HostCert"
|
||||||
|
track-by="_timestampId"></hz-resource-table>
|
||||||
|
</hz-resource-panel>
|
4
tatudashboard/static/tatudashboard/pat.html
Normal file
4
tatudashboard/static/tatudashboard/pat.html
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<hz-resource-panel resource-type-name="OS::Tatu::PAT">
|
||||||
|
<hz-resource-table resource-type-name="OS::Tatu::PAT"
|
||||||
|
track-by="_timestampId"></hz-resource-table>
|
||||||
|
</hz-resource-panel>
|
@ -0,0 +1,86 @@
|
|||||||
|
/**
|
||||||
|
* (c) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular
|
||||||
|
.module('tatudashboard.resources.os-tatu-host-cert')
|
||||||
|
.factory('tatudashboard.resources.os-tatu-host-cert.api', apiService);
|
||||||
|
|
||||||
|
apiService.$inject = [
|
||||||
|
'tatudashboard.apiPassthroughUrl',
|
||||||
|
'horizon.framework.util.http.service',
|
||||||
|
'horizon.framework.widgets.toast.service'
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc service
|
||||||
|
* @param {Object} httpService
|
||||||
|
* @param {Object} toastService
|
||||||
|
* @name apiService
|
||||||
|
* @description Provides direct access to Tatu host certificate APIs.
|
||||||
|
* @returns {Object} The service
|
||||||
|
*/
|
||||||
|
function apiService(apiPassthroughUrl, httpService, toastService) {
|
||||||
|
var service = {
|
||||||
|
get: get,
|
||||||
|
list: list
|
||||||
|
};
|
||||||
|
|
||||||
|
return service;
|
||||||
|
|
||||||
|
///////////////
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name list
|
||||||
|
* @description
|
||||||
|
* Get a list of host certificates.
|
||||||
|
*
|
||||||
|
* The listing result is an object with property "items." Each item is
|
||||||
|
* a host certificate.
|
||||||
|
*
|
||||||
|
* @param {Object} params
|
||||||
|
* Query parameters. Optional.
|
||||||
|
*
|
||||||
|
* @returns {Object} The result of the API call
|
||||||
|
*/
|
||||||
|
function list(params) {
|
||||||
|
var config = params ? {'params': params} : {};
|
||||||
|
return httpService.get(apiPassthroughUrl + 'noauth/hostcerts/', config)
|
||||||
|
.error(function () {
|
||||||
|
toastService.add('error', gettext('Unable to retrieve the certificates.'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name get
|
||||||
|
* @description
|
||||||
|
* Get a single host certificate by ID.
|
||||||
|
*
|
||||||
|
* @param {string} id
|
||||||
|
* Specifies the id of the host certificate to request.
|
||||||
|
*
|
||||||
|
* @returns {Object} The result of the API call
|
||||||
|
*/
|
||||||
|
function get(id) {
|
||||||
|
return httpService.get(apiPassthroughUrl + 'noauth/hostcerts/' + id + '/')
|
||||||
|
.error(function () {
|
||||||
|
toastService.add('error', gettext('Unable to retrieve the certificate.'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}());
|
@ -0,0 +1,114 @@
|
|||||||
|
/**
|
||||||
|
* (c) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License. You may obtain
|
||||||
|
* a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc overview
|
||||||
|
* @ngname tatudashboard.resources.os-tatu-host-cert
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Provides all of the services and widgets required
|
||||||
|
* to support and display SSH (Tatu) host certificate related content.
|
||||||
|
*/
|
||||||
|
angular
|
||||||
|
.module('tatudashboard.resources.os-tatu-host-cert', [
|
||||||
|
'ngRoute'
|
||||||
|
])
|
||||||
|
.constant(
|
||||||
|
'tatudashboard.resources.os-tatu-host-cert.resourceType', 'OS::Tatu::HostCert')
|
||||||
|
.config(config)
|
||||||
|
.run(run);
|
||||||
|
|
||||||
|
config.$inject = ['$provide', '$windowProvider'];
|
||||||
|
|
||||||
|
function config($provide, $windowProvider) {
|
||||||
|
var path = $windowProvider.$get().STATIC_URL + 'tatudashboard/resources/os-tatu-host-cert/';
|
||||||
|
$provide.constant('tatudashboard.resources.os-tatu-host-cert.basePath', path);
|
||||||
|
}
|
||||||
|
|
||||||
|
run.$inject = [
|
||||||
|
'horizon.framework.conf.resource-type-registry.service',
|
||||||
|
'tatudashboard.resources.os-tatu-host-cert.api',
|
||||||
|
'tatudashboard.resources.os-tatu-host-cert.resourceType',
|
||||||
|
'tatudashboard.resources.util',
|
||||||
|
'$filter'
|
||||||
|
];
|
||||||
|
|
||||||
|
function run(registry,
|
||||||
|
api,
|
||||||
|
resourceTypeString,
|
||||||
|
util,
|
||||||
|
$filter) {
|
||||||
|
var resourceType = registry.getResourceType(resourceTypeString);
|
||||||
|
resourceType
|
||||||
|
.setNames(gettext('Certificate'), gettext('Certificate'))
|
||||||
|
.setListFunction(listHostCerts)
|
||||||
|
.setProperty('host_id', {
|
||||||
|
label: gettext('Host ID')
|
||||||
|
})
|
||||||
|
.setProperty('hostname', {
|
||||||
|
label: gettext('Hostname')
|
||||||
|
})
|
||||||
|
.setProperty('fingerprint', {
|
||||||
|
label: gettext('Fingerprint')
|
||||||
|
})
|
||||||
|
.setProperty('auth_id', {
|
||||||
|
label: gettext('Project/CA ID')
|
||||||
|
})
|
||||||
|
.setProperty('cert', {
|
||||||
|
label: gettext('Host Certificate')
|
||||||
|
});
|
||||||
|
|
||||||
|
resourceType
|
||||||
|
.tableColumns
|
||||||
|
.append({
|
||||||
|
id: 'host_id',
|
||||||
|
priority: 1
|
||||||
|
})
|
||||||
|
.append({
|
||||||
|
id: 'hostname',
|
||||||
|
priority: 2
|
||||||
|
})
|
||||||
|
.append({
|
||||||
|
id: 'fingerprint',
|
||||||
|
priority: 2
|
||||||
|
})
|
||||||
|
.append({
|
||||||
|
id: 'auth_id',
|
||||||
|
priority: 2
|
||||||
|
})
|
||||||
|
.append({
|
||||||
|
id: 'cert',
|
||||||
|
priority: 2,
|
||||||
|
filters: [function(input){ return $filter('limitTo')(input, 50, 0); }]
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
function listHostCerts() {
|
||||||
|
return api.list().then(function onList(response) {
|
||||||
|
// listFunctions are expected to return data in "items"
|
||||||
|
response.data.items = response.data.certs;
|
||||||
|
|
||||||
|
util.addTimestampIds(response.data.items, 'host_id');
|
||||||
|
|
||||||
|
return response;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
@ -59,7 +59,7 @@
|
|||||||
*/
|
*/
|
||||||
function list(params) {
|
function list(params) {
|
||||||
var config = params ? {'params': params} : {};
|
var config = params ? {'params': params} : {};
|
||||||
return httpService.get(apiPassthroughUrl + 'noauth/hostcerts/', config)
|
return httpService.get(apiPassthroughUrl + 'noauth/hosts/', config)
|
||||||
.error(function () {
|
.error(function () {
|
||||||
toastService.add('error', gettext('Unable to retrieve the hosts.'));
|
toastService.add('error', gettext('Unable to retrieve the hosts.'));
|
||||||
});
|
});
|
||||||
@ -76,7 +76,7 @@
|
|||||||
* @returns {Object} The result of the API call
|
* @returns {Object} The result of the API call
|
||||||
*/
|
*/
|
||||||
function get(id) {
|
function get(id) {
|
||||||
return httpService.get(apiPassthroughUrl + 'noauth/hostcerts/' + id + '/')
|
return httpService.get(apiPassthroughUrl + 'noauth/hosts/' + id + '/')
|
||||||
.error(function () {
|
.error(function () {
|
||||||
toastService.add('error', gettext('Unable to retrieve the host.'));
|
toastService.add('error', gettext('Unable to retrieve the host.'));
|
||||||
});
|
});
|
||||||
|
@ -50,7 +50,7 @@
|
|||||||
];
|
];
|
||||||
|
|
||||||
function run(registry,
|
function run(registry,
|
||||||
hostApi,
|
api,
|
||||||
resourceTypeString,
|
resourceTypeString,
|
||||||
util,
|
util,
|
||||||
$filter) {
|
$filter) {
|
||||||
@ -58,21 +58,12 @@
|
|||||||
resourceType
|
resourceType
|
||||||
.setNames(gettext('SSH Host'), gettext('SSH Hosts'))
|
.setNames(gettext('SSH Host'), gettext('SSH Hosts'))
|
||||||
.setListFunction(listHosts)
|
.setListFunction(listHosts)
|
||||||
.setProperty('host_id', {
|
.setProperty('id', {
|
||||||
label: gettext('Host ID')
|
label: gettext('Host ID')
|
||||||
})
|
})
|
||||||
.setProperty('hostname', {
|
.setProperty('name', {
|
||||||
label: gettext('Hostname')
|
label: gettext('Hostname')
|
||||||
})
|
})
|
||||||
.setProperty('fingerprint', {
|
|
||||||
label: gettext('Fingerprint')
|
|
||||||
})
|
|
||||||
.setProperty('auth_id', {
|
|
||||||
label: gettext('Project/CA ID')
|
|
||||||
})
|
|
||||||
.setProperty('cert', {
|
|
||||||
label: gettext('Host Certificate')
|
|
||||||
})
|
|
||||||
.setProperty('pat_bastions', {
|
.setProperty('pat_bastions', {
|
||||||
label: gettext('PAT Bastions')
|
label: gettext('PAT Bastions')
|
||||||
})
|
})
|
||||||
@ -83,19 +74,11 @@
|
|||||||
resourceType
|
resourceType
|
||||||
.tableColumns
|
.tableColumns
|
||||||
.append({
|
.append({
|
||||||
id: 'host_id',
|
id: 'id',
|
||||||
priority: 1
|
priority: 1
|
||||||
})
|
})
|
||||||
.append({
|
.append({
|
||||||
id: 'hostname',
|
id: 'name',
|
||||||
priority: 2
|
|
||||||
})
|
|
||||||
.append({
|
|
||||||
id: 'fingerprint',
|
|
||||||
priority: 2
|
|
||||||
})
|
|
||||||
.append({
|
|
||||||
id: 'auth_id',
|
|
||||||
priority: 2
|
priority: 2
|
||||||
})
|
})
|
||||||
.append({
|
.append({
|
||||||
@ -106,16 +89,10 @@
|
|||||||
id: 'pat_bastions',
|
id: 'pat_bastions',
|
||||||
priority: 2,
|
priority: 2,
|
||||||
filters: ['noName']
|
filters: ['noName']
|
||||||
})
|
});
|
||||||
.append({
|
|
||||||
id: 'cert',
|
|
||||||
priority: 2,
|
|
||||||
filters: [function(input){ return $filter('limitTo')(input, 50, 0); }]
|
|
||||||
})
|
|
||||||
|
|
||||||
|
|
||||||
function listHosts() {
|
function listHosts() {
|
||||||
return hostApi.list().then(function onList(response) {
|
return api.list().then(function onList(response) {
|
||||||
// listFunctions are expected to return data in "items"
|
// listFunctions are expected to return data in "items"
|
||||||
response.data.items = response.data.hosts;
|
response.data.items = response.data.hosts;
|
||||||
|
|
||||||
|
@ -0,0 +1,68 @@
|
|||||||
|
/**
|
||||||
|
* (c) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
angular
|
||||||
|
.module('tatudashboard.resources.os-tatu-pat')
|
||||||
|
.factory('tatudashboard.resources.os-tatu-pat.api', apiService);
|
||||||
|
|
||||||
|
apiService.$inject = [
|
||||||
|
'tatudashboard.apiPassthroughUrl',
|
||||||
|
'horizon.framework.util.http.service',
|
||||||
|
'horizon.framework.widgets.toast.service'
|
||||||
|
];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc service
|
||||||
|
* @param {Object} httpService
|
||||||
|
* @param {Object} toastService
|
||||||
|
* @name apiService
|
||||||
|
* @description Provides direct access to Tatu pat APIs.
|
||||||
|
* @returns {Object} The service
|
||||||
|
*/
|
||||||
|
function apiService(apiPassthroughUrl, httpService, toastService) {
|
||||||
|
var service = {
|
||||||
|
get: get,
|
||||||
|
list: list
|
||||||
|
};
|
||||||
|
|
||||||
|
return service;
|
||||||
|
|
||||||
|
///////////////
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @name list
|
||||||
|
* @description
|
||||||
|
* Get a list of PAT gateways.
|
||||||
|
*
|
||||||
|
* The listing result is an object with property "items." Each item is
|
||||||
|
* a PAT gateway.
|
||||||
|
*
|
||||||
|
* @param {Object} params
|
||||||
|
* Query parameters. Optional.
|
||||||
|
*
|
||||||
|
* @returns {Object} The result of the API call
|
||||||
|
*/
|
||||||
|
function list(params) {
|
||||||
|
var config = params ? {'params': params} : {};
|
||||||
|
return httpService.get(apiPassthroughUrl + 'noauth/pats/', config)
|
||||||
|
.error(function () {
|
||||||
|
toastService.add('error', gettext('Unable to retrieve the PAT Gateways.'));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}());
|
@ -0,0 +1,97 @@
|
|||||||
|
/**
|
||||||
|
* (c) Copyright 2016 Hewlett Packard Enterprise Development LP
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License. You may obtain
|
||||||
|
* a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
||||||
|
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
|
||||||
|
* License for the specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
'use strict';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @ngdoc overview
|
||||||
|
* @ngname tatudashboard.resources.os-tatu-host
|
||||||
|
*
|
||||||
|
* @description
|
||||||
|
* Provides all of the services and widgets required
|
||||||
|
* to support and display SSH (Tatu) host related content.
|
||||||
|
*/
|
||||||
|
angular
|
||||||
|
.module('tatudashboard.resources.os-tatu-pat', [
|
||||||
|
'ngRoute'
|
||||||
|
])
|
||||||
|
.constant(
|
||||||
|
'tatudashboard.resources.os-tatu-pat.resourceType', 'OS::Tatu::PAT')
|
||||||
|
.config(config)
|
||||||
|
.run(run);
|
||||||
|
|
||||||
|
config.$inject = ['$provide', '$windowProvider'];
|
||||||
|
|
||||||
|
function config($provide, $windowProvider) {
|
||||||
|
var path = $windowProvider.$get().STATIC_URL + 'tatudashboard/resources/os-tatu-pat/';
|
||||||
|
$provide.constant('tatudashboard.resources.os-tatu-pat.basePath', path);
|
||||||
|
}
|
||||||
|
|
||||||
|
run.$inject = [
|
||||||
|
'horizon.framework.conf.resource-type-registry.service',
|
||||||
|
'tatudashboard.resources.os-tatu-pat.api',
|
||||||
|
'tatudashboard.resources.os-tatu-pat.resourceType',
|
||||||
|
'tatudashboard.resources.util'
|
||||||
|
];
|
||||||
|
|
||||||
|
function run(registry,
|
||||||
|
api,
|
||||||
|
resourceTypeString,
|
||||||
|
util) {
|
||||||
|
var resourceType = registry.getResourceType(resourceTypeString);
|
||||||
|
resourceType
|
||||||
|
.setNames(gettext('SSH PAT Gateway'), gettext('SSH PAT Gateways'))
|
||||||
|
.setListFunction(listPATs)
|
||||||
|
.setProperty('ip', {
|
||||||
|
label: gettext('IP Address')
|
||||||
|
})
|
||||||
|
.setProperty('chassis', {
|
||||||
|
label: gettext('Assigned Compute Node')
|
||||||
|
})
|
||||||
|
.setProperty('lport', {
|
||||||
|
label: gettext('Neutron Port')
|
||||||
|
});
|
||||||
|
|
||||||
|
resourceType
|
||||||
|
.tableColumns
|
||||||
|
.append({
|
||||||
|
id: 'ip',
|
||||||
|
priority: 1
|
||||||
|
})
|
||||||
|
.append({
|
||||||
|
id: 'lport',
|
||||||
|
priority: 2
|
||||||
|
})
|
||||||
|
.append({
|
||||||
|
id: 'chassis',
|
||||||
|
priority: 2
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
function listPATs() {
|
||||||
|
return api.list().then(function onList(response) {
|
||||||
|
// listFunctions are expected to return data in "items"
|
||||||
|
response.data.items = response.data.pats;
|
||||||
|
|
||||||
|
util.addTimestampIds(response.data.items, 'lport');
|
||||||
|
|
||||||
|
return response;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
})();
|
@ -116,7 +116,7 @@
|
|||||||
function listUsers() {
|
function listUsers() {
|
||||||
return userApi.list().then(function onList(response) {
|
return userApi.list().then(function onList(response) {
|
||||||
// listFunctions are expected to return data in "items"
|
// listFunctions are expected to return data in "items"
|
||||||
response.data.items = response.data.users;
|
response.data.items = response.data.certs;
|
||||||
|
|
||||||
util.addTimestampIds(response.data.items, 'user_id');
|
util.addTimestampIds(response.data.items, 'user_id');
|
||||||
|
|
||||||
|
@ -31,6 +31,8 @@
|
|||||||
.module('tatudashboard.resources', [
|
.module('tatudashboard.resources', [
|
||||||
'tatudashboard.resources.os-tatu-ca',
|
'tatudashboard.resources.os-tatu-ca',
|
||||||
'tatudashboard.resources.os-tatu-user',
|
'tatudashboard.resources.os-tatu-user',
|
||||||
'tatudashboard.resources.os-tatu-host'
|
'tatudashboard.resources.os-tatu-host',
|
||||||
|
'tatudashboard.resources.os-tatu-host-cert',
|
||||||
|
'tatudashboard.resources.os-tatu-pat'
|
||||||
]);
|
]);
|
||||||
})();
|
})();
|
||||||
|
@ -66,6 +66,12 @@
|
|||||||
})
|
})
|
||||||
.when('/project/tatu_host/', {
|
.when('/project/tatu_host/', {
|
||||||
templateUrl: path + 'host.html'
|
templateUrl: path + 'host.html'
|
||||||
|
})
|
||||||
|
.when('/project/tatu_host_cert/', {
|
||||||
|
templateUrl: path + 'host_cert.html'
|
||||||
|
})
|
||||||
|
.when('/project/tatu_pat/', {
|
||||||
|
templateUrl: path + 'pat.html'
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user