Skip to content

Commit

Permalink
Fix algorithm, remove unused first draft
Browse files Browse the repository at this point in the history
  • Loading branch information
thomas11 committed Jan 28, 2025
1 parent 2df545b commit afcdc5e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 204 deletions.
69 changes: 18 additions & 51 deletions provider/pkg/versioning/gen.go
Original file line number Diff line number Diff line change
Expand Up @@ -86,45 +86,6 @@ func (v VersionMetadata) GetAllVersions(moduleName openapi.ModuleName, resource
return v.AllResourceVersionsByResource[moduleName][resource]
}

// Collect, for each resource, the API versions that are older than the _previous_ default version and that weren't
// explicitly removed.
func (v VersionMetadata) GetOldApiVersionsPerResource() map[openapi.ModuleName][]openapi.ApiVersion {
result := map[openapi.ModuleName][]openapi.ApiVersion{}
for moduleName, resourceVersions := range v.AllResourceVersionsByResource {
// Collect the explicitly removed versions in a set for easy lookup.
removedFromModule := map[openapi.ApiVersion]struct{}{}
for _, version := range v.RemovedVersions[moduleName] {
removedFromModule[version] = struct{}{}
}

// for resourceName := range resourceVersions {
// previousDefault := v.PreviousDefaultVersions[moduleName][resourceName].ApiVersion
// mustKeep[previousDefault] = struct{}{}
// currentDefault := v.DefaultVersions[moduleName][resourceName].ApiVersion
// mustKeep[currentDefault] = struct{}{}
// }

for resourceName, versions := range resourceVersions {
oldVersionsSet := map[openapi.ApiVersion]struct{}{}
previousDefault := v.PreviousDefaultVersions[moduleName][resourceName].ApiVersion
for _, version := range versions {
if _, ok := removedFromModule[version]; !ok && openapi.CompareApiVersions(version, previousDefault) < 0 {
oldVersionsSet[version] = struct{}{}
}
}
oldVersions := []openapi.ApiVersion{}
for version := range oldVersionsSet {
oldVersions = append(oldVersions, version)
}
slices.SortStableFunc(oldVersions, openapi.CompareApiVersions)
if len(oldVersions) > 0 {
// result[moduleName] = append(result[moduleName], oldVersions)
}
}
}
return result
}

// Collect, for each module, the API versions that are older than any _previous_ default version and that weren't
// explicitly removed.
func (v VersionMetadata) GetOldApiVersionsPerModule() map[openapi.ModuleName][]openapi.ApiVersion {
Expand All @@ -139,28 +100,34 @@ func (v VersionMetadata) GetOldApiVersionsPerModule() map[openapi.ModuleName][]o

// API versions can be removed by module, not by resource. Determine the oldest previous default version for
// this module. It's the cut-off below which we can safely remove versions.
oldestPreviousDefaultVersion := openapi.ApiVersion("2999-01-01")
previousDefaultVersions := []openapi.ApiVersion{}
for _, version := range v.PreviousDefaultVersions[moduleName] {
if openapi.CompareApiVersions(version.ApiVersion, oldestPreviousDefaultVersion) < 0 {
oldestPreviousDefaultVersion = version.ApiVersion
}
previousDefaultVersions = append(previousDefaultVersions, version.ApiVersion)
}
if len(previousDefaultVersions) == 0 {
continue
}
oldestPreviousDefaultVersion := slices.MinFunc(previousDefaultVersions, openapi.CompareApiVersions)

// With oldestPreviousDefaultVersion as cut-off, iterate over all resources and their versions and collect the
// versions that are older than the cut-off.
oldVersionsSet := map[openapi.ApiVersion]struct{}{}
for _, versions := range resourceVersions {
oldVersionsSet := map[openapi.ApiVersion]struct{}{}
for _, version := range versions {
if _, ok := removedFromModule[version]; !ok && openapi.CompareApiVersions(version, oldestPreviousDefaultVersion) < 0 {
oldVersionsSet[version] = struct{}{}
}
}
if len(oldVersionsSet) > 0 {
oldVersions := []openapi.ApiVersion{}
for version := range oldVersionsSet {
oldVersions = append(oldVersions, version)
}
slices.SortStableFunc(oldVersions, openapi.CompareApiVersions)
result[moduleName] = oldVersions
}

// If there are any old versions, sort them and add them to the result.
if len(oldVersionsSet) > 0 {
oldVersions := []openapi.ApiVersion{}
for version := range oldVersionsSet {
oldVersions = append(oldVersions, version)
}
slices.SortStableFunc(oldVersions, openapi.CompareApiVersions)
result[moduleName] = oldVersions
}
}
return result
Expand Down
155 changes: 2 additions & 153 deletions reports/oldApiVersions.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,66 +5,17 @@
"AnalysisServices": [
"2017-08-01-beta"
],
"ApiCenter": [
"2024-03-01",
"2024-03-15-preview",
"2024-06-01-preview"
],
"App": [
"2022-01-01-preview"
],
"AwsConnector": [
"2024-12-01"
],
"AzureDataTransfer": [
"2024-09-27"
],
"AzureFleet": [
"2023-11-01-preview",
"2024-05-01-preview",
"2024-11-01"
],
"AzureLargeInstance": [
"2024-08-01-preview"
],
"AzurePlaywrightService": [
"2023-10-01-preview",
"2024-02-01-preview",
"2024-08-01-preview",
"2024-12-01"
],
"BareMetalInfrastructure": [
"2024-08-01-preview"
],
"Cloudngfw": [
"2022-08-29-preview",
"2022-08-29",
"2023-09-01-preview",
"2023-09-01",
"2023-10-10-preview",
"2024-01-19-preview",
"2024-02-07-preview"
],
"CodeSigning": [
"2024-02-05-preview",
"2024-09-30-preview"
],
"Communication": [
"2020-08-20-preview"
],
"Community": [
"2023-11-01"
],
"Confluent": [
"2020-03-01-preview"
],
"ConnectedCache": [
"2023-05-01-preview"
],
"Contoso": [
"2021-10-01-preview"
],
"DBforMariaDB": [
"2018-06-01-privatepreview",
"2018-06-01-preview"
],
"DBforMySQL": [
Expand All @@ -76,157 +27,55 @@
"Dashboard": [
"2021-09-01-preview"
],
"DataReplication": [
"2021-02-16-preview"
],
"DatabaseWatcher": [
"2023-09-01-preview",
"2024-07-19-preview",
"2024-10-01-preview",
"2025-01-02"
],
"DesktopVirtualization": [
"2021-01-14-preview"
],
"DevCenter": [
"2022-08-01-preview"
],
"DevOpsInfrastructure": [
"2023-10-30-preview",
"2023-12-13-preview",
"2024-03-26-preview",
"2024-04-04-preview",
"2024-10-19"
],
"DeviceRegistry": [
"2023-11-01-preview",
"2024-09-01-preview",
"2024-11-01"
],
"DocumentDB": [
"2021-01-15"
],
"DurableTask": [
"2024-10-01-preview"
],
"Edge": [
"2024-02-01-preview"
],
"EdgeMarketplace": [
"2023-08-01-preview",
"2023-08-01"
],
"Elastic": [
"2020-07-01-preview"
],
"Fabric": [
"2023-11-01"
],
"HealthBot": [
"2020-12-08-preview"
],
"HealthDataAIServices": [
"2024-02-28-preview",
"2024-09-20"
],
"HealthcareApis": [
"2021-01-11",
"2021-06-01-preview",
"2021-11-01",
"2022-01-31-preview"
],
"HybridConnectivity": [
"2021-10-06-preview"
],
"Impact": [
"2024-05-01-preview"
],
"IntegrationSpaces": [
"2023-11-14-preview"
],
"Intune": [
"2015-01-14-privatepreview"
],
"IoTFirmwareDefense": [
"2023-02-08-preview",
"2024-01-10"
],
"IoTOperations": [
"2024-07-01-preview"
],
"IoTOperationsDataProcessor": [
"2023-10-04-preview"
],
"IoTOperationsMQ": [
"2023-10-04-preview"
],
"IoTOperationsOrchestrator": [
"2023-10-04-preview"
],
"KubernetesRuntime": [
"2023-10-01-preview",
"2024-03-01"
],
"Logz": [
"2020-10-01-preview"
],
"MobileNetwork": [
"2022-03-01-preview"
],
"NetworkAnalytics": [
"2023-11-15"
],
"NetworkFunction": [
"2021-09-01-preview"
],
"OffAzureSpringBoot": [
"2024-04-01-preview"
],
"OpenEnergyPlatform": [
"2021-06-01-preview"
],
"Orbital": [
"2022-03-01",
"2022-11-01"
],
"Portal": [
"2018-10-01-preview"
],
"PortalServices": [
"2024-04-01-preview"
],
"ProgrammableConnectivity": [
"2024-01-15-preview"
],
"Quota": [
"2023-06-01-preview",
"2024-10-15-preview",
"2024-12-18-preview",
"2025-03-01"
],
"Scom": [
"2023-07-07-preview"
],
"Search": [
"2020-08-01-preview"
],
"SecretSyncController": [
"2024-08-21-preview"
],
"SecurityAndCompliance": [
"2021-01-11"
],
"StandbyPool": [
"2023-12-01-preview",
"2024-03-01-preview",
"2024-03-01"
],
"Storage": [
"2021-01-01"
],
"StorageActions": [
"2023-01-01"
],
"VerifiedId": [
"2024-01-26-preview"
]
}

0 comments on commit afcdc5e

Please sign in to comment.