2015-04-20 18:13:27 +00:00
< div class = "super-user" >
2015-01-23 22:19:15 +00:00
< div class = "cor-loader" ng-show = "!configStatus" > < / div >
< div class = "page-content" quay-show = "Features.SUPER_USERS && configStatus == 'ready'" >
2017-01-13 20:50:50 +00:00
< div ng-if = "requiresRestart && configProviderId == 'file'" class = "alert alert-warning restart-required" >
2015-01-26 18:46:57 +00:00
< button class = "btn btn-warning" ng-click = "restartContainer()" >
< i class = "fa fa-refresh" > < / i > Restart Now
< / button >
< i class = "fa fa-lg fa-warning" > < / i >
< div > < strong > Container restart required!< / strong > < / div >
Configuration changes have been made but the container hasn't been restarted yet.
< / div >
2017-01-13 20:50:50 +00:00
< div ng-if = "requiresRestart && configProviderId == 'k8s'" class = "alert alert-warning restart-required" >
< i class = "fa fa-lg fa-warning" > < / i >
< div > < strong > Container restarts required!< / strong > < / div >
Configuration changes have been made to the Kubernetes secret but they will not be applied to
your cluster until the containers are restarted. Please issue a rolling deployment now to apply
these changes to the cluster.
< / div >
2015-01-04 19:38:41 +00:00
< div class = "cor-title" >
< span class = "cor-title-link" > < / span >
2016-02-05 10:16:23 +00:00
< span class = "cor-title-content" > Quay Enterprise Management< / span >
2015-01-04 19:38:41 +00:00
< / div >
2014-10-01 17:55:09 +00:00
2017-05-29 22:39:14 +00:00
< cor-tab-panel orientation = "vertical" cor-nav-tabs >
2017-04-28 21:03:38 +00:00
< cor-tabs >
< cor-tab tab-title = "Manage Users"
tab-id="users" tab-init="loadUsers()">
2015-01-04 19:38:41 +00:00
< i class = "fa fa-group" > < / i >
2017-04-28 21:03:38 +00:00
< / cor-tab >
< cor-tab tab-title = "Manage Organizations"
tab-id="organizations" tab-init="loadOrganizations()">
2015-05-11 22:03:25 +00:00
< i class = "fa fa-sitemap" > < / i >
2017-04-28 21:03:38 +00:00
< / cor-tab >
< cor-tab tab-title = "Manage Service Keys"
tab-id="servicekeys" tab-init="loadServiceKeys()">
2016-04-01 17:55:29 +00:00
< i class = "fa fa-key" > < / i >
2017-04-28 21:03:38 +00:00
< / cor-tab >
< cor-tab tab-title = "Change Log" tab-id = "change-log" tab-init = "getChangeLog()" >
2015-06-28 05:27:39 +00:00
< i class = "fa fa-rss" > < / i >
2017-04-28 21:03:38 +00:00
< / cor-tab >
< cor-tab tab-title = "Usage Logs" tab-id = "logs" tab-init = "loadUsageLogs()" >
2015-01-04 19:38:41 +00:00
< i class = "fa fa-bar-chart" > < / i >
2017-04-28 21:03:38 +00:00
< / cor-tab >
< cor-tab tab-title = "Internal Logs and Debugging" tab-id = "debug"
tab-init="loadDebugServices()">
2015-01-04 19:38:41 +00:00
< i class = "fa fa-bug" > < / i >
2017-04-28 21:03:38 +00:00
< / cor-tab >
< cor-tab tab-title = "Globally visible user messages" tab-id = "message-of-the-day"
tab-init="loadMessageOfTheDay()">
2016-10-11 19:09:38 +00:00
< i class = "fa fa-newspaper-o" > < / i >
2017-04-28 21:03:38 +00:00
< / cor-tab >
< cor-tab tab-title = "Build Logs" tab-id = "super-user-build-logs"
2018-01-31 23:09:38 +00:00
tab-init="loadSuperUserBuildLogs()"
quay-show="Features.BUILD_SUPPORT">
2017-01-24 17:15:26 +00:00
< i class = "fa fa-history" > < / i >
2017-04-28 21:03:38 +00:00
< / cor-tab >
< / cor-tabs >
2014-10-28 20:33:13 +00:00
2017-04-28 21:03:38 +00:00
< cor-tab-content >
2017-01-24 17:15:26 +00:00
<!-- Super user build logs tab -->
2017-04-28 21:03:38 +00:00
< cor-tab-pane id = "super-user-build-logs" >
2017-01-24 17:15:26 +00:00
< div class = "super-user-build-logs" is-enabled = "superUserBuildLogsActive" > < / div >
2017-04-28 21:03:38 +00:00
< / cor-tab-pane > <!-- Super user build logs tab -->
2017-01-24 17:15:26 +00:00
2016-10-11 19:09:38 +00:00
<!-- Messages tab -->
2017-04-28 21:03:38 +00:00
< cor-tab-pane id = "message-of-the-day" >
2016-10-11 19:09:38 +00:00
< div class = "global-message-tab" is-enabled = "globalMessagesActive" > < / div >
2017-04-28 21:03:38 +00:00
< / cor-tab-pane > <!-- Messages tab -->
2016-10-11 19:09:38 +00:00
2016-04-01 17:55:29 +00:00
<!-- Service keys tab -->
2017-04-28 21:03:38 +00:00
< cor-tab-pane id = "servicekeys" >
2016-04-01 17:55:29 +00:00
< div class = "service-keys-manager" is-enabled = "serviceKeysActive" > < / div >
2017-04-28 21:03:38 +00:00
< / cor-tab-pane >
2016-04-01 17:55:29 +00:00
2015-01-04 19:38:41 +00:00
<!-- Debugging tab -->
2017-04-28 21:03:38 +00:00
< cor-tab-pane id = "debug" >
2017-05-24 18:34:29 +00:00
< div class = "co-alert co-alert-warning" ng-show = "multipleInstances" >
Debug logs cannot be displayed as < span class = "registry-name" > < / span > is running under multiple containers. To retrieve logs, please use your implementation's custom configured logging solution.
< / div >
< div ng-show = "!multipleInstances" >
< div class = "cor-loader" ng-show = "!debugServices" > < / div >
< div role = "tabpanel" ng-show = "debugServices" >
<!-- Nav tabs -->
< ul class = "nav nav-tabs" role = "tablist" >
< li role = "presentation" ng-repeat = "service in debugServices"
ng-class="debugService == service ? 'active' : ''">
< a ng-click = "viewSystemLogs(service)" > {{ service }}< / a >
< / li >
< / ul >
2015-01-04 19:38:41 +00:00
2017-05-24 18:34:29 +00:00
< div class = "system-log-download-panel" ng-if = "!debugService" >
Select a service above to view its local logs
2015-01-04 19:38:41 +00:00
2017-05-24 18:34:29 +00:00
< div >
< a class = "btn btn-primary" href = "/systemlogsarchive?_csrf_token={{ csrf_token }}" ng-safenewtab >
< i class = "fa fa-download fa-lg" style = "margin-right: 4px;" > < / i > Download All Local Logs (.tar.gz)
< / a >
< / div >
2016-10-13 13:04:59 +00:00
< / div >
2017-05-24 18:34:29 +00:00
< div class = "cor-log-box" logs = "debugLogs" ng-show = "debugService" > < / div >
2014-11-24 21:07:38 +00:00
< / div >
2014-04-10 04:26:55 +00:00
< / div >
2017-04-28 21:03:38 +00:00
< / cor-tab-pane >
2014-04-10 04:26:55 +00:00
2015-01-04 19:38:41 +00:00
<!-- Logs tab -->
2017-04-28 21:03:38 +00:00
< cor-tab-pane id = "logs" >
2015-01-04 19:38:41 +00:00
< div class = "logsView" makevisible = "logsCounter" all-logs = "true" > < / div >
2017-04-28 21:03:38 +00:00
< / cor-tab-pane > <!-- /logs tab -->
2014-11-24 21:07:38 +00:00
2015-06-28 05:27:39 +00:00
<!-- Change Log tab -->
2017-04-28 21:03:38 +00:00
< cor-tab-pane id = "change-log" >
2015-06-28 05:27:39 +00:00
< h3 style = "margin-top: 0px;" > Change Log< / h3 >
< div class = "cor-loader" ng-if = "!changeLog" > < / div >
2017-05-10 21:18:37 +00:00
< markdown-view ng-if = "changeLog"
content="changeLog.log" >< / markdown-view >
2017-04-28 21:03:38 +00:00
< / cor-tab-pane > <!-- /change - log tab -->
2015-01-04 19:38:41 +00:00
2015-05-11 22:03:25 +00:00
<!-- Organizations tab -->
2017-04-28 21:03:38 +00:00
< cor-tab-pane id = "organizations" >
2015-05-11 22:03:25 +00:00
< div class = "resource-view" resource = "organizationsResource"
error-message="'Could not load organizations'">
< div class = "manager-header" header-title = "Organizations" >
< / div >
2016-12-20 23:29:30 +00:00
< div class = "co-top-bar" >
< span class = "co-filter-box" >
< span class = "page-controls" total-count = "orderedOrgs.entries.length" current-page = "options.page" page-size = "orgsPerPage" > < / span >
< input class = "form-control" type = "text" ng-model = "options.filter" placeholder = "Filter Organizations..." style = "margin-right: 10px;" >
< / span >
< / div >
2015-05-11 22:03:25 +00:00
2016-12-20 23:29:30 +00:00
< table class = "cor-table" ng-if = "orderedOrgs.entries.length && !isLoading" >
2015-05-11 22:03:25 +00:00
< thead >
2016-10-13 13:04:59 +00:00
< td style = "width: 24px;" > < / td >
2016-12-20 23:29:30 +00:00
< td ng-class = "tablePredicateClass('name', options.predicate, options.reverse)" >
< a ng-click = "orderBy('name')" > Name< / a >
< / td >
< td ng-class = "tablePredicateClass('email', options.predicate, options.reverse)" >
< a ng-click = "orderBy('email')" > Admin Email< / a >
< / td >
2016-10-13 13:04:59 +00:00
< td style = "width: 24px;" > < / td >
2015-05-11 22:03:25 +00:00
< / thead >
2016-12-20 23:29:30 +00:00
< tr ng-repeat = "current_org in orderedOrgs . entries | slice
:(orgsPerPage * options.page)
:(orgsPerPage * (options.page + 1))"
2015-05-11 22:03:25 +00:00
class="org-row">
< td >
< span class = "avatar" data = "current_org.avatar" size = "24" > < / span >
< / td >
< td >
{{ current_org.name }}
< / td >
2015-10-16 19:17:51 +00:00
< td >
< a href = "mailto:{{ current_org.email }}" > {{ current_org.email }}< / a >
< / td >
2015-05-11 22:03:25 +00:00
< td style = "text-align: center;" >
< span class = "cor-options-menu" >
< span class = "cor-option" option-click = "askRenameOrganization(current_org)" >
< i class = "fa fa-arrow-right" > < / i > Rename Organization
< / span >
< span class = "cor-option" option-click = "askDeleteOrganization(current_org)" >
< i class = "fa fa-times" > < / i > Delete Organization
< / span >
2017-03-22 16:25:20 +00:00
< span class = "cor-option" option-click = "askTakeOwnership(current_org)" >
2016-06-07 22:12:11 +00:00
< i class = "fa fa-bolt" > < / i > Take Ownership
< / span >
2015-05-11 22:03:25 +00:00
< / span >
< / td >
< / tr >
< / table >
< / div > <!-- /resource -->
2017-04-28 21:03:38 +00:00
< / cor-tab-pane > <!-- organizations tab -->
2015-05-11 22:03:25 +00:00
2015-01-23 22:19:15 +00:00
<!-- Users tab -->
2017-04-28 21:03:38 +00:00
< cor-tab-pane id = "users" class = "tab-pane active" >
2016-10-13 13:04:59 +00:00
< div class = "manage-user-tab" is-enabled = "manageUsersActive" > < / div >
2017-04-28 21:03:38 +00:00
< / cor-tab-pane > <!-- users - tab -->
< / cor-tab-content >
< / cor-tab-panel >
2015-01-04 19:38:41 +00:00
<!-- Modal message dialog -->
2015-01-26 18:46:57 +00:00
< div class = "co-dialog modal fade" id = "restartingContainerModal" >
< div class = "modal-dialog" >
< div class = "modal-content" >
< div class = "modal-header" >
< h4 class = "modal-title" > Container Currently Restarting< / h4 >
< / div >
< div class = "modal-body" style = "padding: 20px;" >
< i class = "fa fa-lg fa-refresh" style = "margin-right: 10px;" > < / i >
< span class = "registry-name" > < / span > is currently being restarted.
< br > < br >
This can take several minutes. If the container does not restart on its own,
please reexecute the < code > docker run< / code > command.
< / div >
< div class = "modal-footer working" >
< span class = "cor-loader-inline" > < / span > Waiting for container to restart...
< / div >
< / div > <!-- /.modal - content -->
< / div > <!-- /.modal - dialog -->
< / div > <!-- /.modal -->
2017-03-22 16:25:20 +00:00
< div class = "cor-confirm-dialog take-ownership-dialog"
dialog-context="takeOwnershipInfo"
dialog-action="takeOwnership(info, callback)"
dialog-title="Take Ownership"
dialog-action-title="Take Ownership">
Are you sure you want to take ownership of organization < span class = "avatar" data = "takeOwnershipInfo.entity.avatar" size = "16" > < / span > {{ takeOwnershipInfo.entity.name }}?< / span >
< / div >
2015-05-11 18:38:10 +00:00
2015-01-04 19:38:41 +00:00
< / div > <!-- /page - content -->
< / div >