Add GraphQL query for Virtual Registry cleanup policies

📖 Context

This MR is the part of Add GraphQL query and mutations for Virtual Reg... (#577161) • Sylvia Shen • 18.6.

We separated the issue into 2 MRs:

  • Add GraphQL query for Virtual Registry cleanup policies 👈🏻 This MR
  • Add GraphQL mutation for Virtual Registry cleanup policies

What does this MR do and why?

This MR adds GraphQL query for Virtual Registry cleanup policies to provide a GraphQL equivalent for the REST API GET endpoint.

  • Add virtualRegistriesCleanupPolicy query type
    virtualRegistriesCleanupPolicy {
          groupId
          cadence
          createdAt
          updatedAt
          enabled
          keepNDaysAfterDownload
          lastRunAt
          lastRunDeletedSize
          lastRunDetailedMetrics {
            maven {
              deletedSize
              deletedEntriesCount
            }
          }
          lastRunDeletedEntriesCount
          nextRunAt
          status
        }
  • Add Resolvers::VirtualRegistries::Cleanup::PolicyResolver
  • Add VirtualRegistries::Cleanup::PolicyPolicy

References

N/A

Screenshots or screen recordings

N/A

How to set up and validate locally

  1. Switch to this branch 577161-add-graphql-for-vg-cleanup-policies-query
  2. Enable feature flag and setup Virtual registry settings
    # Enable maven virtual registry
    ::Feature.enabled(:maven_virtual_registry)
    
    # Create virtual registry setting
    group = Group.find_by(path: 'gitlab-org')
    user = User.find(1)
    VirtualRegistries::Settings::CreateOrUpdateService.new(
      group: group,
      current_user: user,
      params: { enabled: true }
    ).execute
    
  3. Create cleanup policy
    VirtualRegistries::Cleanup::Policy.create!(
      group: group,
      keep_n_days_after_download: 30,
      cadence: 7,
      enabled: true,
      notify_on_success: true,
      notify_on_failure: true,
      status: :scheduled,
      last_run_deleted_entries_count: 250,
      last_run_deleted_size: 5120,
      last_run_detailed_metrics: {
        'maven' => {
          'deleted_entries_count' => 150,
          'deleted_size' => 3072
        },
        'container' => {
          'deleted_entries_count' => 100,
          'deleted_size' => 2048
        }
      }
    )
  4. Go to Graphql explorer (http://gdk.test:3000/-/graphql-explorer) and test the new query type
     query {
       group(fullPath: "gitlab-org") {
         virtualRegistriesCleanupPolicy {
           groupId
           lastRunAt
           lastRunDeletedSize
           lastRunDetailedMetrics {
             maven {
               deletedSize
               deletedEntriesCount
             }
           }
           lastRunDeletedEntriesCount
         }
       }
     }

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #577161

Edited by Sylvia Shen

Merge request reports

Loading