|
|
|
@ -120,122 +120,98 @@ func Sort(nodes []*NavLink) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
func (root *NavTreeRoot) ApplyAdminIA(navAdminSubsectionsEnabled bool) { |
|
|
|
|
func (root *NavTreeRoot) ApplyAdminIA() { |
|
|
|
|
orgAdminNode := root.FindById(NavIDCfg) |
|
|
|
|
|
|
|
|
|
if orgAdminNode != nil { |
|
|
|
|
adminNodeLinks := []*NavLink{} |
|
|
|
|
|
|
|
|
|
if navAdminSubsectionsEnabled { |
|
|
|
|
generalNodeLinks := []*NavLink{} |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("upgrading")) // TODO does this even exist
|
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("licensing")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("org-settings")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("server-settings")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("global-orgs")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("feature-toggles")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("storage")) |
|
|
|
|
|
|
|
|
|
generalNode := &NavLink{ |
|
|
|
|
Text: "General", |
|
|
|
|
SubTitle: "Manage default preferences and settings across Grafana", |
|
|
|
|
Id: NavIDCfgGeneral, |
|
|
|
|
Url: "/admin/general", |
|
|
|
|
Icon: "shield", |
|
|
|
|
Children: generalNodeLinks, |
|
|
|
|
} |
|
|
|
|
generalNodeLinks := []*NavLink{} |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("upgrading")) // TODO does this even exist
|
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("licensing")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("org-settings")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("server-settings")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("global-orgs")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("feature-toggles")) |
|
|
|
|
generalNodeLinks = AppendIfNotNil(generalNodeLinks, root.FindById("storage")) |
|
|
|
|
|
|
|
|
|
generalNode := &NavLink{ |
|
|
|
|
Text: "General", |
|
|
|
|
SubTitle: "Manage default preferences and settings across Grafana", |
|
|
|
|
Id: NavIDCfgGeneral, |
|
|
|
|
Url: "/admin/general", |
|
|
|
|
Icon: "shield", |
|
|
|
|
Children: generalNodeLinks, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
pluginsNodeLinks := []*NavLink{} |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("plugins")) |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("datasources")) |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("recordedQueries")) |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("correlations")) |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("plugin-page-grafana-cloud-link-app")) |
|
|
|
|
|
|
|
|
|
pluginsNode := &NavLink{ |
|
|
|
|
Text: "Plugins and data", |
|
|
|
|
SubTitle: "Install plugins and define the relationships between data", |
|
|
|
|
Id: NavIDCfgPlugins, |
|
|
|
|
Url: "/admin/plugins", |
|
|
|
|
Icon: "shield", |
|
|
|
|
Children: pluginsNodeLinks, |
|
|
|
|
} |
|
|
|
|
pluginsNodeLinks := []*NavLink{} |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("plugins")) |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("datasources")) |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("recordedQueries")) |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("correlations")) |
|
|
|
|
pluginsNodeLinks = AppendIfNotNil(pluginsNodeLinks, root.FindById("plugin-page-grafana-cloud-link-app")) |
|
|
|
|
|
|
|
|
|
pluginsNode := &NavLink{ |
|
|
|
|
Text: "Plugins and data", |
|
|
|
|
SubTitle: "Install plugins and define the relationships between data", |
|
|
|
|
Id: NavIDCfgPlugins, |
|
|
|
|
Url: "/admin/plugins", |
|
|
|
|
Icon: "shield", |
|
|
|
|
Children: pluginsNodeLinks, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
accessNodeLinks := []*NavLink{} |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("global-users")) |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("teams")) |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("standalone-plugin-page-/a/grafana-auth-app")) |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("serviceaccounts")) |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("apikeys")) |
|
|
|
|
|
|
|
|
|
usersNode := &NavLink{ |
|
|
|
|
Text: "Users and access", |
|
|
|
|
SubTitle: "Configure access for individual users, teams, and service accounts", |
|
|
|
|
Id: NavIDCfgAccess, |
|
|
|
|
Url: "/admin/access", |
|
|
|
|
Icon: "shield", |
|
|
|
|
Children: accessNodeLinks, |
|
|
|
|
} |
|
|
|
|
accessNodeLinks := []*NavLink{} |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("global-users")) |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("teams")) |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("standalone-plugin-page-/a/grafana-auth-app")) |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("serviceaccounts")) |
|
|
|
|
accessNodeLinks = AppendIfNotNil(accessNodeLinks, root.FindById("apikeys")) |
|
|
|
|
|
|
|
|
|
usersNode := &NavLink{ |
|
|
|
|
Text: "Users and access", |
|
|
|
|
SubTitle: "Configure access for individual users, teams, and service accounts", |
|
|
|
|
Id: NavIDCfgAccess, |
|
|
|
|
Url: "/admin/access", |
|
|
|
|
Icon: "shield", |
|
|
|
|
Children: accessNodeLinks, |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if len(generalNode.Children) > 0 { |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, generalNode) |
|
|
|
|
} |
|
|
|
|
if len(generalNode.Children) > 0 { |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, generalNode) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if len(pluginsNode.Children) > 0 { |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, pluginsNode) |
|
|
|
|
} |
|
|
|
|
if len(pluginsNode.Children) > 0 { |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, pluginsNode) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if len(usersNode.Children) > 0 { |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, usersNode) |
|
|
|
|
} |
|
|
|
|
if len(usersNode.Children) > 0 { |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, usersNode) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
authenticationNode := root.FindById("authentication") |
|
|
|
|
if authenticationNode != nil { |
|
|
|
|
authenticationNode.IsSection = true |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, authenticationNode) |
|
|
|
|
} |
|
|
|
|
authenticationNode := root.FindById("authentication") |
|
|
|
|
if authenticationNode != nil { |
|
|
|
|
authenticationNode.IsSection = true |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, authenticationNode) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
costManagementNode := root.FindById("plugin-page-grafana-costmanagementui-app") |
|
|
|
|
costManagementNode := root.FindById("plugin-page-grafana-costmanagementui-app") |
|
|
|
|
|
|
|
|
|
if costManagementNode != nil { |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, costManagementNode) |
|
|
|
|
} |
|
|
|
|
if costManagementNode != nil { |
|
|
|
|
adminNodeLinks = append(adminNodeLinks, costManagementNode) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
costManagementMetricsNode := root.FindByURL("/a/grafana-costmanagementui-app/metrics") |
|
|
|
|
adaptiveMetricsNode := root.FindById("plugin-page-grafana-adaptive-metrics-app") |
|
|
|
|
costManagementMetricsNode := root.FindByURL("/a/grafana-costmanagementui-app/metrics") |
|
|
|
|
adaptiveMetricsNode := root.FindById("plugin-page-grafana-adaptive-metrics-app") |
|
|
|
|
|
|
|
|
|
if costManagementMetricsNode != nil && adaptiveMetricsNode != nil { |
|
|
|
|
costManagementMetricsNode.Children = append(costManagementMetricsNode.Children, adaptiveMetricsNode) |
|
|
|
|
} |
|
|
|
|
if costManagementMetricsNode != nil && adaptiveMetricsNode != nil { |
|
|
|
|
costManagementMetricsNode.Children = append(costManagementMetricsNode.Children, adaptiveMetricsNode) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
costManagementLogsNode := root.FindByURL("/a/grafana-costmanagementui-app/logs") |
|
|
|
|
logVolumeExplorerNode := root.FindById("plugin-page-grafana-logvolumeexplorer-app") |
|
|
|
|
costManagementLogsNode := root.FindByURL("/a/grafana-costmanagementui-app/logs") |
|
|
|
|
logVolumeExplorerNode := root.FindById("plugin-page-grafana-logvolumeexplorer-app") |
|
|
|
|
|
|
|
|
|
if costManagementLogsNode != nil && logVolumeExplorerNode != nil { |
|
|
|
|
costManagementLogsNode.Children = append(costManagementLogsNode.Children, logVolumeExplorerNode) |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("datasources")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("plugins")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("global-users")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("teams")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("serviceaccounts")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("apikeys")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("org-settings")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("authentication")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("server-settings")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("global-orgs")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("feature-toggles")) |
|
|
|
|
|
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("upgrading")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("licensing")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("recordedQueries")) // enterprise only
|
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("correlations")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("plugin-page-grafana-cloud-link-app")) |
|
|
|
|
|
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("ldap")) |
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("standalone-plugin-page-/a/grafana-auth-app")) // Cloud Access Policies
|
|
|
|
|
adminNodeLinks = AppendIfNotNil(adminNodeLinks, root.FindById("storage")) |
|
|
|
|
if costManagementLogsNode != nil && logVolumeExplorerNode != nil { |
|
|
|
|
costManagementLogsNode.Children = append(costManagementLogsNode.Children, logVolumeExplorerNode) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if len(adminNodeLinks) > 0 { |
|
|
|
|