1. 15 Jun, 2016 40 commits
    • Annabel Dunstone's avatar
      10ae756a
    • Jacob Schatz's avatar
      Merge branch 'issue_18575' into 'master' · 5f22603b
      Jacob Schatz authored
      Improve usability for prioritized labels
      
      ## What does this MR do?
      - Adds an icon next to prioritized label rows serving as a hint to the user that the labels can be sorted by dragging them.
      - Adds description about prioritized labels.
      - Restores empty message when removing all prioritized labels.
      
      ## Screenshots (if relevant)
      
      ![labels](/uploads/1da16c4c54a894fa45ccc47e3a5bdf7a/labels.gif)
      
      Closes #18575 
      
      See merge request !4652
      5f22603b
    • Jacob Schatz's avatar
      Merge branch 'new-project-mobile' into 'master' · 7094a4d7
      Jacob Schatz authored
      New Project page improvements for mobile
      
      ## What does this MR do?
      
      Redesigns the "Project path" fields on the New Project page.
      
      ## Are there points in the code the reviewer needs to double check?
      
      Not that I know of, nothing I changed should break any other pages.
      
      ## Why was this MR needed?
      
      The new project page was unusable on mobile because the project name text field didn't have enough space.
      
      ## What are the relevant issue numbers?
      
      Fixes #18599.
      
      ## Screenshots (if relevant)
      
      Before:
      
      ![Screen_Shot_2016-06-15_at_12.38.58_PM](/uploads/046a824b283e24266cabc9ea3dfb169c/Screen_Shot_2016-06-15_at_12.38.58_PM.png)
      
      After:
      
      ![Screen_Shot_2016-06-15_at_12.37.19_PM](/uploads/6d01310192965b413bfedd9c8d2129f7/Screen_Shot_2016-06-15_at_12.37.19_PM.png)
      
      ![Screen_Shot_2016-06-15_at_12.37.28_PM](/uploads/3944a0f0ab04373ec92f7cafe90872df/Screen_Shot_2016-06-15_at_12.37.28_PM.png)
      
      ## Does this MR meet the acceptance criteria?
      
      - [ ] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
      - [ ] Tests
        - [x] Added for this feature/bug
        - [ ] All builds are passing
      - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
      - [ ] Branch has no merge conflicts with `master` (if you do - rebase it please)
      - [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
      
      cc: @jschatz1 @dzaporozhets 
      
      See merge request !4687
      7094a4d7
    • Jacob Schatz's avatar
      Merge branch 'pinned-sidebar' into 'master' · 64a09d6e
      Jacob Schatz authored
      Pinned sidebar navigation option
      
      ## What does this MR do?
      
      Gives the ability to pin the sidebar navigation. Pinning is only possible on screens with above `lg` which is `1200px` if not it reverts to being hidden by default.
      
      ## What are the relevant issue numbers?
      
      Closes #18542 
      
      ## Screenshots (if relevant)
      
      ### Un-pinned
      
      ![Screen_Shot_2016-06-15_at_17.29.08](/uploads/82b7495df6ea46a2334a7c25d03b019b/Screen_Shot_2016-06-15_at_17.29.08.png)
      
      ### Pinned
      
      ![Screen_Shot_2016-06-15_at_17.29.41](/uploads/3eb381be807985d0a9583f000cb802f9/Screen_Shot_2016-06-15_at_17.29.41.png)
      
      See merge request !4683
      64a09d6e
    • Robert Speicher's avatar
      Merge branch 'update-changelog-8.8.5' into 'master' · 02dfbca3
      Robert Speicher authored
      Update CHANGELOG for 8.8.5 release
      
      [ci skip]
      
      See merge request !4688
      02dfbca3
    • Stan Hu's avatar
      Merge branch 'fair-usage-of-shared-runners' into 'master' · 919e3ed2
      Stan Hu authored
      Fair usage of Shared Runners
      
      ## What does this MR do?
      
      Introduces a fair usage scheduler for shared runners.
      
      It tries to assign builds to shared runner from projects that have the lowest number of builds currently running on shared runners.
      
      **Example 1**:
      ```
      We have following builds in queue:
      build 1 for project 1
      build 2 for project 1
      build 3 for project 1
      build 4 for project 2
      build 5 for project 2
      build 6 for project 3
      
      With the new algorithm we will assign builds in following order:
      - We choose build 1, because project 1 doesn't run currently any builds and has the lowest build number from projects that doesn't run builds,
      - We choose build 4, because project 2 doesn't run currently any builds and has the lowest build number from projects that doesn't run builds,
      - We choose build 6, because project 3 doesn't run currently any builds and has the lowest build number from projects that doesn't run builds,
      - We choose build 2, because project 1 as other it runs 1 build,
      - We choose build 5, because project 2 runs 1 build, where project 1 runs 2 builds now,
      - We choose build 3, because project 1 and runs 2 builds.
      ```
      
       
      **Example 2**:
      ```
      We have following builds in queue:
      build 1 for project 1
      build 2 for project 1
      build 3 for project 1
      build 4 for project 2
      build 5 for project 2
      build 6 for project 3
      
      With the new algorithm we will assign builds in following order:
      - We choose build 1, because project 1 doesn't run currently any builds and has the lowest build number from projects that doesn't run builds,
      - We finish build 1,
      - We choose build 2, because project 1 doesn't run currently any builds and has the lowest build number from projects that doesn't run builds,
      - We choose build 4, because project 2 doesn't run currently any builds and has the lowest build number from projects that doesn't run builds,
      - We finish build 4,
      - We choose build 5, because project 2 doesn't run currently any builds and has the lowest build number from projects that doesn't run builds,
      - We choose build 6, because project 3 doesn't run currently any builds,
      - We choose build 3, because project 1, 2 and 3 runs exactly one build now,
      ```
      
      ## Why was this MR needed?
      
      Currently, we are scheduling builds using FIFO. This is catastrophic if there are projects that create a 100-300 jobs, this basically eats most of available shared runners.
      
      ## Performance
      
      All this logic is implemented with the help of SQL queries, because this is the fastest way to process 1k-2k pending builds in queue.
      It's not the fastest SQL query, because it sorts based on number of running_builds, and this forces to calculate a number of running builds for all dependent projects. However, since we have one/two shared runners that asks every few seconds for builds this should have minimal impact on DB performance.
      
      ```
       explain analyze SELECT "ci_builds".* FROM "ci_builds" JOIN (SELECT "ci_builds"."gl_project_id", count(case when status = 'running' AND runner_id = (SELECT "ci_runners"."id" FROM "ci_runners" WHERE "ci_runners"."is_shared" = 't') then 1 end) as running_builds FROM "ci_builds" INNER JOIN "projects" ON "projects"."id" = "ci_builds"."gl_project_id" AND "projects"."pending_delete" = 'f' WHERE "ci_builds"."type" IN ('Ci::Build') AND "ci_builds"."status" IN ('running', 'pending') AND "projects"."builds_enabled" = 't' AND "projects"."shared_runners_enabled" = 't' GROUP BY "ci_builds"."gl_project_id") AS projects ON ci_builds.gl_project_id=projects.gl_project_id WHERE "ci_builds"."type" IN ('Ci::Build') AND "ci_builds"."status" = 'pending' AND "ci_builds"."runner_id" IS NULL  ORDER BY projects.running_builds ASC, ci_builds.id ASC;
                                                                                        QUERY PLAN                                                                        
                 
      --------------------------------------------------------------------------------------------------------------------------------------------------------------------
      -----------
       Sort  (cost=64777.28..64777.29 rows=1 width=1010) (actual time=301.794..302.535 rows=1537 loops=1)
         Sort Key: (count(CASE WHEN (((public.ci_builds.status)::text = 'running'::text) AND (public.ci_builds.runner_id = $0)) THEN 1 ELSE NULL::integer END)), public.ci
      _builds.id
         Sort Method: quicksort  Memory: 1423kB
         ->  Nested Loop  (cost=63279.78..64777.27 rows=1 width=1010) (actual time=66.384..298.724 rows=1537 loops=1)
               ->  HashAggregate  (cost=63177.15..63177.30 rows=15 width=15) (actual time=65.641..65.851 rows=187 loops=1)
                     InitPlan 1 (returns $0)
                       ->  Seq Scan on ci_runners  (cost=0.00..26963.66 rows=1 width=4) (actual time=1.145..34.381 rows=1 loops=1)
                             Filter: is_shared
                             Rows Removed by Filter: 6965
                     ->  Nested Loop  (cost=0.00..36186.34 rows=2715 width=15) (actual time=0.065..29.717 rows=1710 loops=1)
                           ->  Index Scan using index_ci_builds_on_status on ci_builds  (cost=0.00..8913.95 rows=3577 width=15) (actual time=0.051..12.012 rows=2583 loops
      =1)
                                 Index Cond: ((status)::text = ANY ('{running,pending}'::text[]))
                                 Filter: ((type)::text = 'Ci::Build'::text)
                                 Rows Removed by Filter: 1219
                           ->  Index Scan using projects_pkey on projects  (cost=0.00..7.61 rows=1 width=4) (actual time=0.003..0.004 rows=1 loops=2583)
                                 Index Cond: (id = public.ci_builds.gl_project_id)
                                 Filter: ((NOT pending_delete) AND builds_enabled AND shared_runners_enabled)
                                 Rows Removed by Filter: 0
               ->  Bitmap Heap Scan on ci_builds  (cost=102.63..106.64 rows=1 width=1002) (actual time=1.216..1.231 rows=8 loops=187)
                     Recheck Cond: ((gl_project_id = public.ci_builds.gl_project_id) AND ((status)::text = 'pending'::text))
                     Filter: ((runner_id IS NULL) AND ((type)::text = 'Ci::Build'::text))
                     ->  BitmapAnd  (cost=102.63..102.63 rows=1 width=0) (actual time=1.201..1.201 rows=0 loops=187)
                           ->  Bitmap Index Scan on index_ci_builds_on_gl_project_id  (cost=0.00..10.52 rows=241 width=0) (actual time=0.406..0.406 rows=1944 loops=187)
                                 Index Cond: (gl_project_id = public.ci_builds.gl_project_id)
                           ->  Bitmap Index Scan on index_ci_builds_on_status  (cost=0.00..91.78 rows=3089 width=0) (actual time=0.652..0.652 rows=3362 loops=187)
                                 Index Cond: ((status)::text = 'pending'::text)
       Total runtime: 303.832 ms
      ```
      
      ## Specific runners
      
      It doesn't affect the specific runners which still serve builds FIFO.
      
      @stanhu @markpundsack @yorickpeterse What do you think?
      
      
      See merge request !4634
      919e3ed2
    • Connor Shea's avatar
    • Stan Hu's avatar
      Update CHANGELOG for 8.8.5 release · c69715ba
      Stan Hu authored
      [ci skip]
      c69715ba
    • Connor Shea's avatar
      Fix test. · fbc91599
      Connor Shea authored
      fbc91599
    • Connor Shea's avatar
      Improve New Project page for mobile. · 01d9bffd
      Connor Shea authored
      Separate the New Project page's "Project path" grouped fields into separate fields.
      
      Fixes #18599.
      01d9bffd
    • Phil Hughes's avatar
      Moved pinned button to the bottom · 78866921
      Phil Hughes authored
      Changed breakpoint width to 1440px
      78866921
    • Robert Speicher's avatar
      Merge branch... · 2cfbf3e8
      Robert Speicher authored
      Merge branch '18131-pressing-merge-when-build-succeeds-at-the-same-exact-time-that-a-build-is-failing-will-merge-the-failed-build' into 'master'
      
      Fix race condition on auto merge
      
      Resolves #18131
      
      See merge request !4443
      2cfbf3e8
    • Rémy Coutable's avatar
      Merge branch 'project-services-inverse-of' into 'master' · 32a5ff70
      Rémy Coutable authored
      Set inverse_of for Project/Services relation
      
      ## What does this MR do?
      
      This MR adds the `inverse_of:` option to two associations to reduce the number of queries when running code such as ` project.gitlab_issue_tracker_service.project`.
      
      ## Are there points in the code the reviewer needs to double check?
      
      No.
      
      ## Why was this MR needed?
      
      In !4410 it was revealed code such as the above is used and would run SQL queries when the root object (usually a Project) was already present. By using `inverse_of` Rails can just re-use those Project instances.
      
      ## What are the relevant issue numbers?
      
      None.
      
      ## Does this MR meet the acceptance criteria?
      
      - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
      - [x] ~~[Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)~~
      - [x] ~~API support added~~
      - [x] Tests
        - [x] ~~Added for this feature/bug~~
        - [x] All builds are passing
      - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
      - [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
      - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
      
      See merge request !4674
      32a5ff70
    • Phil Hughes's avatar
      Clicking body closes nav · 7d9157ff
      Phil Hughes authored
      Fixed issue when nav wasn't present
      7d9157ff
    • Z.J. van de Weg's avatar
      Rename ci_commit to pipeline · 17ad286e
      Z.J. van de Weg authored
      17ad286e
    • Zeger-Jan van de Weg's avatar
      Fix race condition on auto merge · 3fe4a2f5
      Zeger-Jan van de Weg authored
      3fe4a2f5
    • Phil Hughes's avatar
      Increased speed of sidebar transition · 9d74eb46
      Phil Hughes authored
      9d74eb46
    • Yorick Peterse's avatar
      Set inverse_of for Project/Services relation · 8a9164bf
      Yorick Peterse authored
      This ensures that code such as this don't run needless SQL queries:
      
          project.gitlab_issue_tracker_service.project
      
      This also means that if the root `project` eager loads any associations
      the Service object will be able to re-use those.
      8a9164bf
    • Douwe Maan's avatar
      Merge branch 'remove-shell-env' into 'master' · af493ccf
      Douwe Maan authored
      Get rid of Gitlab::ShellEnv
      
      Remove obsolete code we once needed for Grack and satellites.
      
      See merge request !4673
      af493ccf
    • Dmitriy Zaporozhets's avatar
      Merge branch '18338-change-admin-navigation-to-match-new-ui' into 'master' · e09d573e
      Dmitriy Zaporozhets authored
      Resolve "Change admin navigation to match new UI"
      
      ## What does this MR do?
      Moves admin navigation to layout nav to match Project, Groups, and Profile navigation
      
      ## Are there points in the code the reviewer needs to double check?
      
      ## Why was this MR needed?
      
      ## What are the relevant issue numbers?
      Closes #18338
      
      ## Screenshots (if relevant)
      ![Screen_Shot_2016-06-14_at_10.26.40_AM](/uploads/f0b8c8b259da16d929be2b36e8eeafb8/Screen_Shot_2016-06-14_at_10.26.40_AM.png)
      ![Screen_Shot_2016-06-14_at_10.26.44_AM](/uploads/07d9ece2063dfcfec1f0f2647d8ee782/Screen_Shot_2016-06-14_at_10.26.44_AM.png)
      ## Does this MR meet the acceptance criteria?
      
      - [ ] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
      - [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
      - [ ] API support added
      - [ ] Tests
        - [ ] Added for this feature/bug
        - [ ] All builds are passing
      - [ ] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
      - [ ] Branch has no merge conflicts with `master` (if you do - rebase it please)
      - [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
      
      See merge request !4650
      e09d573e
    • Jacob Schatz's avatar
      Merge branch 'preventdefault-disabled-buttons' into 'master' · b2247398
      Jacob Schatz authored
      Prevent default disabled buttons and links.
      
      ## What does this MR do?
      Prevents default action for disabled buttons and links. If the element has `.btn` and `.disabled` at the same time, its default action will be prevented.
      
      ## Are there points in the code the reviewer needs to double check?
      Yes. Is there a better way to do that?
      
      ## Why was this MR needed?
      Right now we can click disabled links and it cause some troubles like in #18079.
      
      ## What are the relevant issue numbers?
      Fixes #18079
      
      ## Screenshots (if relevant)
      ![disabled-click](/uploads/48b58ce130f843e530e62632bcc27436/disabled-click.gif)
      
      ## Does this MR meet the acceptance criteria?
      
      - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
      - [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
      - [ ] API support added
      - [x] Tests
        - [x] Added for this feature/bug
        - [x] All builds are passing
      - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
      - [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
      - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
      
      See merge request !4658
      b2247398
    • Phil Hughes's avatar
      Pinned sidebar navigation option · e3529d54
      Phil Hughes authored
      Closes #18542
      e3529d54
    • Jacob Schatz's avatar
      Merge branch 'show_number_of_mrs_in_milestone_page' into 'master' · a69cd321
      Jacob Schatz authored
      Show number of processed MRs in milestone page
      
      closes #14025 
      
      ![Screen_Shot_2016-05-02_at_6.20.34_PM](/uploads/9208e58c0e0c77133bd73332ee3b3342/Screen_Shot_2016-05-02_at_6.20.34_PM.png)
      
      See merge request !4006
      a69cd321
    • Dmitriy Zaporozhets's avatar
      bcbe9b4d
    • Fatih Acet's avatar
      Prevent default disabled buttons and links. · 415b032b
      Fatih Acet authored
      415b032b
    • Alfredo Sumaran's avatar
      Add handler icon to prioritized labels · 0cb7d834
      Alfredo Sumaran authored
      0cb7d834
    • Yorick Peterse's avatar
      Merge branch 'add-index-on-requested_at-to-members' into 'master' · 33b68f87
      Yorick Peterse authored
      Add index on `requested_at` to the `members` table
      
      See merge request !4679
      33b68f87
    • Jacob Schatz's avatar
      Merge branch 'mr-buttons-update' into 'master' · 93a496d2
      Jacob Schatz authored
      Fixed issue with MR buttons being in a group
      
      ## What does this MR do?
      
      Fixes design issue with the buttons in the merge request widget
      
      ## Screenshots (if relevant)
      
      ![Screen_Shot_2016-06-09_at_14.13.32](/uploads/44ac4175f5a97a8d7baf97be6eebc684/Screen_Shot_2016-06-09_at_14.13.32.png)
      
      
      See merge request !4562
      93a496d2
    • Jacob Vosmaer (GitLab)'s avatar
      Merge branch '18225-avoid-full-table-users-count' into 'master' · 2f459a03
      Jacob Vosmaer (GitLab) authored
      Check if the Users table has exactly one user limiting the whole set
      
      ## What does this MR do?
      
      Limit the query set so about a full scan for all the rows on the users table (only scan to records)
      
      #18225 
      
      See merge request !4492
      2f459a03
    • Rémy Coutable's avatar
      Merge branch 'docker-registry-manifest-v1' into 'master' · a8b46301
      Rémy Coutable authored
      Add support for Docker Registry manifest v1
      
      ## What does this MR do?
      
      Adds support for Manifest V1 generated by older versions of Docker (before 1.10).
      
      ## What are the relevant issue numbers?
      
      Fixes https://gitlab.com/gitlab-org/gitlab-ce/issues/18609
      
      
      See merge request !4669
      a8b46301
    • Jacob Schatz's avatar
      Merge branch 'issuable-sidebar-dropdown-deselect-fix' into 'master' · e27de526
      Jacob Schatz authored
      Fixed issue with de-selecting dropdown option in issue sidebar
      
      ## What does this MR do?
      
      When de-selecting either an assignee or milestone, we try to send `undefined` which jQuery removes from the request causing a routing error. Instead this MR sends `null` which jQuery still sends and then correctly removes either the milestone or assignee. 
      
      ## What are the relevant issue numbers?
      
      Closes #18641 
      
      ## Screenshots (if relevant)
      
      ![assignee](/uploads/6eaca416fb6e31eabf4c038967160c07/assignee.gif)
      
      ## Does this MR meet the acceptance criteria?
      
      - [ ] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
      - [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
      - [ ] API support added
      - [ ] Tests
        - [ ] Added for this feature/bug
        - [ ] All builds are passing
      - [ ] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
      - [ ] Branch has no merge conflicts with `master` (if you do - rebase it please)
      - [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
      
      See merge request !4671
      e27de526
    • Rémy Coutable's avatar
      b4ed272d
    • Jacob Schatz's avatar
      Merge branch 'tooltip-change' into 'master' · d1f0ad45
      Jacob Schatz authored
      Update project star/unstar tooltip
      
      ## What does this MR do?
      Fixes project toggle star button tooltip to show actual tooltip for its state.
      
      ## Are there points in the code the reviewer needs to double check?
      No.
      
      ## Why was this MR needed?
      - When you star a project tooltip wasn't changing.
      - When you star a project and refresh the page, tooltip was still showing `Star Project`
      
      ## What are the relevant issue numbers?
      Fixes #18143
      
      ## Screenshots (if relevant)
      
      ### Before 
      ![Screen_Shot_2016-06-15_at_15.31.57](/uploads/e005951c23eeed7c2761a0ec1911f3ce/Screen_Shot_2016-06-15_at_15.31.57.png)
      
      ### After
      ![tooltip-change](/uploads/4caec99eac6ffcc7331947fdfdb9e051/tooltip-change.gif)
      
      ## Does this MR meet the acceptance criteria?
      
      - [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
      - [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
      - [ ] API support added
      - [ ] Tests
        - [ ] Added for this feature/bug
        - [ ] All builds are passing
      - [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
      - [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
      - [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)
      
      See merge request !4672
      d1f0ad45
    • Annabel Dunstone's avatar
      Rearrange order of tabs · 6d10d825
      Annabel Dunstone authored
      6d10d825
    • Kamil Trzcinski's avatar
    • Dmitriy Zaporozhets's avatar
      d5efd17d
    • Kamil Trzcinski's avatar
      Show created_at in table column · 3213023d
      Kamil Trzcinski authored
      3213023d
    • Annabel Dunstone's avatar
      Nest li elements directly under ul · f1245bde
      Annabel Dunstone authored
      f1245bde
    • Annabel Dunstone's avatar
      Move builds tab to admin overview · d3b6c185
      Annabel Dunstone authored
      d3b6c185
    • Annabel Dunstone's avatar
      Add monitoring link with subtabs · d1c3f3d8
      Annabel Dunstone authored
      d1c3f3d8