-
Notifications
You must be signed in to change notification settings - Fork 5.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
keyvault: fixing the duplicate constant types #21137
Conversation
Hi, @tombuildsstuff Thanks for your PR. I am workflow bot for review process. Here are some small tips. Any feedback about review process or workflow bot, pls contact swagger and tools team. vscswagger@microsoft.com |
Swagger Validation Report
|
compared swaggers (via Oad v0.10.2)] | new version | base version |
---|---|---|
certificates.json | 7.3(b0d0b0e) | 7.3(main) |
keys.json | 7.3(b0d0b0e) | 7.3(main) |
Rule | Message |
---|---|
1047 - XmsEnumChanged |
The new version has a different x-ms-enum 'name' than the previous one. New: Microsoft.KeyVault/stable/7.3/certificates.json#L1625:9 Old: Microsoft.KeyVault/stable/7.3/certificates.json#L1625:9 |
1047 - XmsEnumChanged |
The new version has a different x-ms-enum 'name' than the previous one. New: Microsoft.KeyVault/stable/7.3/keys.json#L2195:9 Old: Microsoft.KeyVault/stable/7.3/keys.json#L2195:9 |
️️✔️
Breaking Change(Cross-Version) succeeded [Detail] [Expand]
There are no breaking changes.
️️✔️
CredScan succeeded [Detail] [Expand]
There is no credential detected.
️⚠️
LintDiff: 0 Warnings warning [Detail]
compared tags (via openapi-validator v2.0.0) | new version | base version |
---|---|---|
package-7.3 | package-7.3(b0d0b0e) | package-7.3(main) |
The following errors/warnings exist before current PR submission:
Only 30 items are listed, please refer to log for more details.
Rule | Message |
---|---|
MissingTypeObject |
The schema 'CertificateAttributes' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1247 |
MissingTypeObject |
The schema 'CertificateItem' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1312 |
MissingTypeObject |
The schema 'CertificateIssuerItem' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1338 |
MissingTypeObject |
The schema 'CertificateBundle' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1351 |
MissingTypeObject |
The schema 'DeletedCertificateBundle' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1403 |
IntegerTypeMustHaveFormat |
The integer type does not have a format, please add it. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1414 |
ValidFormats |
'unixtime' is not a known format. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1416 |
IntegerTypeMustHaveFormat |
The integer type does not have a format, please add it. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1420 |
ValidFormats |
'unixtime' is not a known format. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1422 |
MissingTypeObject |
The schema 'DeletedCertificateItem' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1429 |
IntegerTypeMustHaveFormat |
The integer type does not have a format, please add it. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1440 |
ValidFormats |
'unixtime' is not a known format. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1442 |
IntegerTypeMustHaveFormat |
The integer type does not have a format, please add it. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1446 |
ValidFormats |
'unixtime' is not a known format. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1448 |
MissingTypeObject |
The schema 'CertificateOperation' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1455 |
MissingTypeObject |
The schema 'CertificatePolicy' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1499 |
MissingTypeObject |
The schema 'X509CertificateProperties' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1540 |
MissingTypeObject |
The schema 'IssuerParameters' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1591 |
MissingTypeObject |
The schema 'LifetimeAction' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1610 |
MissingTypeObject |
The schema 'Action' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1623 |
MissingTypeObject |
The schema 'Trigger' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1640 |
MissingTypeObject |
The schema 'SubjectAlternativeNames' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1657 |
MissingTypeObject |
The schema 'IssuerBundle' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1683 |
MissingTypeObject |
The schema 'IssuerAttributes' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1710 |
IntegerTypeMustHaveFormat |
The integer type does not have a format, please add it. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1716 |
ValidFormats |
'unixtime' is not a known format. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1718 |
IntegerTypeMustHaveFormat |
The integer type does not have a format, please add it. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1722 |
ValidFormats |
'unixtime' is not a known format. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1724 |
MissingTypeObject |
The schema 'IssuerCredentials' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1731 |
MissingTypeObject |
The schema 'OrganizationDetails' is considered an object but without a 'type:object', please add the missing 'type:object'. Location: Microsoft.KeyVault/stable/7.3/certificates.json#L1745 |
️️✔️
Avocado succeeded [Detail] [Expand]
Validation passes for Avocado.
️️✔️
ApiReadinessCheck succeeded [Detail] [Expand]
️⚠️
~[Staging] ServiceAPIReadinessTest: 0 Warnings warning [Detail]
API Test is not triggered due to precheck failure. Check pipeline log for details.
️️✔️
~[Staging] SwaggerAPIView succeeded [Detail] [Expand]
️❌
ModelValidation: 13 Errors, 0 Warnings failed [Detail]
Rule | Message |
---|---|
INVALID_FORMAT |
Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16 ExampleUrl: stable/7.3/examples/DeleteCertificate-example.json#L17:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqe8aINnShK+wQC8QU7fwsviQc9+yiOnqU3adXA6qNjn21HTdRBa7cyQIk1STxHIBLTT/GaEJwqsUi6UvZaPEHokOWsr1bP9M7xOPTicBcRyMrr6bOxsmGczYtu1z2TzzXDD7q7IEignE7/LowGEaIADCIU9iuWk7TiJ+1Q/VLh/B3xPsgVjY+n7zEQ53gBiDHSl7XfELfwmslOQ28TVNogUyXsxHcVxQQYJeI7HqqY448LeleK69Ld86lkBixLEm1pD7HSbEx3WI2lyUQAGR6hD3YFaiIWVpQeEyI7p1jmtQlnfZdEL4q9wdlEEcwd3h3PAZpEBhCixahF54fci3pwIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBACiLeghirF+yCuYGVUPDB3wKQJn2iLY1za9ncxCehIVqOkFK09AphzoxF6Yid90AKCaa/dT/Ohm7oTyVQ+YcZnT00LUNFVG48AOE8YDiw9tjAG9OORsAz80xnv2qaLw2TCVIQ6NjrI83LqAm1GJ8rAnpdD/ZTuWM7TvSO5g/jm/Q0oSuKpMgj3YxpwgB9Ac6YEfVzOnm76OkUcpvR5MS4BoTfRv4thdSnU+uwqxM+HtdSVTbHQeC2U/hM1cyzDMpl1rZRklmiEOoPUeDasEIBVTJhAxR8xAeKJJD7Wzj4mJPw4UMvF8zQZzW8EKYvB1hkVYY+HQ85L+XcXd8lco7hU4= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1467:16 ExampleUrl: stable/7.3/examples/CreateCertificate-example.json#L39:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIIC... Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16 ExampleUrl: stable/7.3/examples/ImportCertificate-example.json#L29:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16 ExampleUrl: stable/7.3/examples/UpdateCertificate-example.json#L25:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16 ExampleUrl: stable/7.3/examples/GetCertificate-example.json#L15:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxxM2zqnPtpH8aiHX5TdEoZLO0Y6fsjk9QcjKgnHomrwUc9vK20UYYEPKt9aGOT7HNx0do8OulPCnLPrKowci8UHu1qRW/qHvsOJQ/UrQoMCHxtXptVc7Avx8WQb045sCdgp/Cl4xO8LMZa70kE4dghZU9zmNZk8wqDIxyYdh1lqqfGe49EWOxcfszTeeKs8KCsQznjExbsudBHLLWoX4VFTGMe3VcIPcV6iFf70buHKznDMXFiRC0IYwkc/GyWIadB1CSEae8k/0evsPI5lYYZLaO/kLffEUtzysqxZNCQR+S0eVPTGTLHa+fndnPPs65XZDzSZi2fZL01oXUfCAQQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAKto/ZF9+02fQ3sLuIsRuap/O/AZz3IhAubNfyCaWvVGVAQz/Aqpf5c/liyKhxqRG6LR9Zu50oxRK5222ezR+56vJikjdXRVShf2xYsMm1CbCM1JuzsnkTeoUHHE12xx1srH/9TH+DVZIk6NXxc4wVIagbpwxiS5gR3Nly5k0ZVv7R1B79J0GUqSwK6qjuooWrBsYMEx319hz8fB/Y4jnPE8p+Cnn3AGEqnebVngXncq/QnHxnrRVfvKFVySqRvlsvM8buILmBbIaywEUqwhNtZX2i9E7reEJ8aeZcf+lAeKF3YDvffaXGTc75aiZlBk30Lv/hn0vs9T0/FedUnIae4= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1467:16 ExampleUrl: stable/7.3/examples/UpdateCertificateOperation-example.json#L17:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAqe8aINnShK+wQC8QU7fwsviQc9+yiOnqU3adXA6qNjn21HTdRBa7cyQIk1STxHIBLTT/GaEJwqsUi6UvZaPEHokOWsr1bP9M7xOPTicBcRyMrr6bOxsmGczYtu1z2TzzXDD7q7IEignE7/LowGEaIADCIU9iuWk7TiJ+1Q/VLh/B3xPsgVjY+n7zEQ53gBiDHSl7XfELfwmslOQ28TVNogUyXsxHcVxQQYJeI7HqqY448LeleK69Ld86lkBixLEm1pD7HSbEx3WI2lyUQAGR6hD3YFaiIWVpQeEyI7p1jmtQlnfZdEL4q9wdlEEcwd3h3PAZpEBhCixahF54fci3pwIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBACiLeghirF+yCuYGVUPDB3wKQJn2iLY1za9ncxCehIVqOkFK09AphzoxF6Yid90AKCaa/dT/Ohm7oTyVQ+YcZnT00LUNFVG48AOE8YDiw9tjAG9OORsAz80xnv2qaLw2TCVIQ6NjrI83LqAm1GJ8rAnpdD/ZTuWM7TvSO5g/jm/Q0oSuKpMgj3YxpwgB9Ac6YEfVzOnm76OkUcpvR5MS4BoTfRv4thdSnU+uwqxM+HtdSVTbHQeC2U/hM1cyzDMpl1rZRklmiEOoPUeDasEIBVTJhAxR8xAeKJJD7Wzj4mJPw4UMvF8zQZzW8EKYvB1hkVYY+HQ85L+XcXd8lco7hU4= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1467:16 ExampleUrl: stable/7.3/examples/GetCertificateOperation-example.json#L14:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIIC4zCCAcsCAQAwGjEYMBYGA1UEAwwPKi5taWNyb3NvZnQuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApf+kGcL+5uivj/ToYbQ15zcx3caEnpzXaX2eJgL0/Kwaz4u2/bNJ9+hoXnlOFFbCp4canVoNvgu8fw5NOu9U3gJNFQwjHeAqfsg8okZGkIk0riIpp4MMb/4GQb2y3B28AcTu2FANdzLoZzBqmQs51KBe1RONkdtqDYXIvnb5G+9+P7PCy5G//Ga0JAP6Y6P8+TrE9JLEj6Sny0ljLMpMyt4rIRAtNfKYSeiWVQmYX4jZfImIW3iq91zwMsRlrzTm80mNfHPCv7V/8NmYuh0MQgCr49lLbbKCgzDyo9h8sblVQvR5TAylpIk7bSQNf4tSdVNHnsF6CJWu6Pg31hyMpQIDAQABoIGDMIGABgkqhkiG9w0BCQ4xczBxMA4GA1UdDwEB/wQEAwIFoDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwNQYDVR0RBC4wLIIWb25lZHJpdmUubWljcm9zb2Z0LmNvbYISeGJveC5taWNyb3NvZnQuY29tMAkGA1UdEwQCMAAwDQYJKoZIhvcNAQELBQADggEBAHVjmYFs3FmecaJ1ExhK1WCFJaQJUTVbPJ1xJ93UJlLivhzI1yhQO9nMC2DKV+E+UCxceqjae6OG5LUhXfYAziS0HTc80+ZcUqrZRb5ZRt+8HU0TPbTDDqjj8wMZ4VlgQ3eXGAGesMfZV3AqWwa5itofvqm8KAmL4Yn/XMSHcKfRx3h9WnC6RXgZ8WNYK+r5o+gHlmuF7/AaNFh8UjIsjjOZQ0Yin/vA4yBEYTt1/OC7pScs3bdL9CIf4rC98qaMSf4B2W/vfrXUo0gGPYcep25jy7xnIltSY80Trn3Mty5YQ0IT+KPQcJKhbryGg6bIy4jJDwS7zkn51MR1q3kNoOA= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1467:16 ExampleUrl: stable/7.3/examples/DeleteCertificateOperation-example.json#L14:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIICxTCCAb....trimmed for brevitiy...EPAQj8= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1903:20 ExampleUrl: stable/7.3/examples/MergeCertificate-example.json#L6:19 |
INVALID_FORMAT |
Object didn't pass validation for format byte: ……de34534…… Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16 ExampleUrl: stable/7.3/examples/MergeCertificate-example.json#L18:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIIDMjCCAhqgAwIBAgIQGn/FrGQZT/Cd9kgXIsytEjANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtleGFtcGxlLmNvbTAeFw0xODA0MTcxODI2MjZaFw0xOTA0MTcxODM2MjZaMBYxFDASBgNVBAMTC2V4YW1wbGUuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsODIu9EJhfnn57k4++j6dC1M6Egi9aZucFQ9Jc29vFG9L9BkzllPGluKKdH1ypsrAUif7yGaq5d1nDyLhZUncU8dV/YIA7oll/fC+d0H4A37kVbM/60zXhXnKRx+DRZ2hJQzNBOodCaZpyZZEuYvtWdSCSILpa0R7yXYevjLaG5LfckOzuurXqeos7WB+l2q1c+6zx1KbNXbBl7QOz2nzk9oJU7CdhPOc+LOLppmsXRwwluKtmCDyKdrKAF/dANp5zGXFsognQcRctLSGQp8FbgBVQyZ+v81n9bPpSaBoUQMcH4uG9jPO6CWwbDSWE+FVYAm5kgjuW/1hqRSnOEV8QIDAQABo3wwejAOBgNVHQ8BAf8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwHwYDVR0jBBgwFoAUaYJoBFokrORdsxOTA8sgrosMOmgwHQYDVR0OBBYEFGmCaARaJKzkXbMTkwPLIK6LDDpoMA0GCSqGSIb3DQEBCwUAA4IBAQAxL3t0kV1dq/PGUztjW+qK6Nh4sx7jsU59JtjON6zcibJ4hM+Q3Z+cEvW9zuGkuTbLz6fKNL9VnkF1LnlWTsyRmS7bF15/7iOgfdrr0vkJKVM1Zv/tqKEpBJ7Cbc0vW/VJQxZN+OlqGNc9bcx3cnqkRwpkgM25T0dVpoWtCgMwayUtbPFbTZWHHbpzHLF2BzYf5HyW1BoKXcVPM3r/rS7RETasRRsz2GqXXdfhjCd+HKVyv5kD9N3WcFNUsaq3TqAUZyOx9bO0Cn3gkmgz05JpfhPEylXwVpVAccOoXsNoFdxEKGO0w7pk7PwOhsW8sFprdXWp6OxtL0rrCNFF/llT Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16 ExampleUrl: stable/7.3/examples/RestoreCertificate-example.json#L16:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16 ExampleUrl: stable/7.3/examples/GetDeletedCertificate-example.json#L18:16 |
INVALID_FORMAT |
Object didn't pass validation for format byte: MIICODCCAeagAwIBAgIQqHmpBAv+CY9IJFoUhlbziTAJBgUrDgMCHQUAMBYxFDASBgNVBAMTC1Jvb3QgQWdlbmN5MB4XDTE1MDQyOTIxNTM0MVoXDTM5MTIzMTIzNTk1OVowFzEVMBMGA1UEAxMMS2V5VmF1bHRUZXN0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5bVAT73zr4+N4WVv2+SvTunAw08ksS4BrJW/nNliz3S9XuzMBMXvmYzU5HJ8TtEgluBiZZYd5qsMJD+OXHSNbsLdmMhni0jYX09h3XlC2VJw2sGKeYF+xEaavXm337aZZaZyjrFBrrUl51UePaN+kVFXNlBb3N3TYpqa7KokXenJQuR+i9Gv9a77c0UsSsDSryxppYhKK7HvTZCpKrhVtulF5iPMswWe9np3uggfMamyIsK/0L7X9w9B2qN7993RR0A00nOk4H6CnkuwO77dSsD0KJsk6FyAoZBzRXDZh9+d9R76zCL506NcQy/jl0lCiQYwsUX73PG5pxOh02OwKwIDAQABo0swSTBHBgNVHQEEQDA+gBAS5AktBh0dTwCNYSHcFmRjoRgwFjEUMBIGA1UEAxMLUm9vdCBBZ2VuY3mCEAY3bACqAGSKEc+41KpcNfQwCQYFKw4DAh0FAANBAGqIjo2geVagzuzaZOe1ClGKhZeiCKfWAxklaGN+qlGUbVS4IN4V1lot3VKnzabasmkEHeNxPwLn1qvSD0cX9CE= Url: Microsoft.KeyVault/stable/7.3/certificates.json#L1380:16 ExampleUrl: stable/7.3/examples/RecoverDeletedCertificate-example.json#L14:16 |
️️✔️
SemanticValidation succeeded [Detail] [Expand]
Validation passes for SemanticValidation.
️️✔️
PoliCheck succeeded [Detail] [Expand]
Validation passed for PoliCheck.
️️✔️
PrettierCheck succeeded [Detail] [Expand]
Validation passes for PrettierCheck.
️️✔️
SpellCheck succeeded [Detail] [Expand]
Validation passes for SpellCheck.
️️✔️
Lint(RPaaS) succeeded [Detail] [Expand]
Validation passes for Lint(RPaaS).
️️✔️
CadlValidation succeeded [Detail] [Expand]
Validation passes for CadlValidation.
️⌛
PR Summary pending [Detail]
Swagger Generation Artifacts
|
Rule | Message |
---|---|
RestBuild error |
"logUrl":"https://apidrop.visualstudio.com/Content%20CI/_build/results?buildId=337374&view=logs&j=fd490c07-0b22-5182-fac9-6d67fe1e939b", "detail":"Run.ps1 failed with exit code 128 " |
️️✔️
SDK Breaking Change Tracking succeeded [Detail] [Expand]
Breaking Changes Tracking
Thank you for your contribution tombuildsstuff! We will review the pull request and get back to you soon. |
@@ -1630,7 +1630,7 @@ | |||
"AutoRenew" | |||
], | |||
"x-ms-enum": { | |||
"name": "ActionType", | |||
"name": "CertificateActionType", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is a breaking change for SDKs but shouldn't be necessary. This name only affects SDKs, which should be referencing individual swaggers to generate separate SDKs for keys, secrets, certificates, and administration (basically, everything else). So conflicts between the two are irrelevant unless you're generating a single SDK targeting all swaggers, though.
That begs the question, though: have you considered using our Go SDKs? https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/keyvault
Alternatively, you could use an autorest transform you can pass to autorest to rename these e.g.:
directive:
- from: certificates.json
where: $.definitions.Actions
transform: $.properties.action_type["x-ms-enum"].name = "CertificateActionType";
- from: keys.json
where: $.definitions.LifetimeActionsType
transform: $.properties.type["x-ms-enum"].name = "LifetimeActionType";
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
$.definitions.Actions
should be $.definitions.Action
- from: certificates.json
where: $.definitions.Action
transform: $.properties.action_type["x-ms-enum"].name = "CertificateActionType";
- from: keys.json
where: $.definitions.LifetimeActionsType
transform: $.properties.type["x-ms-enum"].name = "LifetimeActionType";
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@heaths thanks for the suggestion.
This is a breaking change for SDKs but shouldn't be necessary. This name only affects SDKs, which should be referencing individual swaggers to generate separate SDKs for keys, secrets, certificates, and administration (basically, everything else). So conflicts between the two are irrelevant unless you're generating a single SDK targeting all swaggers, though.
From our side we're trying to generate the SDK using the same approach that Track1 is using today, namely keeping this in a single package - so I think the autorest transform is probably fine as a workaround here, but it begs the question of why not fix the data rather than applying a workaround?
From a logical deployment perspective, since these operations are exposed in the same Swagger directory, I'd expect them to be deployed together - so I'd argue that if these are intended to be separate SDKs then these should be split out (which would also remove the need for this workaround). Whilst this may seem like a pedantic point, fixing the data (either by merging this PR as-is, or by splitting these files into different directories) seems preferable to applying autorest workarounds, which should presumably only be a short-term solution and not widely used, else the source data isn't accurate?
That begs the question, though: have you considered using our Go SDKs? https://github.com/Azure/azure-sdk-for-go/tree/main/sdk/keyvault
Unfortunately we're unable to use the Track2 SDK's for reasons we've raised with the Azure SDK team previously - instead we're using hashicorp/go-azure-sdk
which is generated from hashicorp/pandora
(for Resource Manager) - and we'll be generating some Data Plane packages into another repository until we look into importing/generating those.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There are a lot of services that don't use swagger in non-standard ways and we've been generating our SDKs with these definitions for several years. It was a lot of extra work for almost every SDK language to trim support for endpoints that weren't supposed to be in an SDK, like keys and certs endpoints in the secrets SDK.
Going forward with Cadl - a new description language that can generate both server- and client-side code (and swaggers, for legacy support) we'll create subdirectories per SDK, so these files won't be in the same directory. Ever since we refactored them, they were never meant to represent a single service.
Why can't you use the track 2? I've talked with several teams in the past and showed them our migration guides e.g., https://github.com/Azure/azure-sdk-for-net/blob/main/sdk/keyvault/Azure.Security.KeyVault.Secrets/MigrationGuide.md. Everything should be supported 1:1 between track 1 and track 2 SDKs already except for SAS (not recommended anyway, which is why we didn't generate an SDK).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It was a lot of extra work for almost every SDK language to trim support for endpoints that weren't supposed to be in an SDK, like keys and certs endpoints in the secrets SDK.
Potentially an odd take, but why would these be stripped out? If the Swagger documents them the SDK's should be generating them.
Going forward with Cadl - a new description language that can generate both server- and client-side code (and swaggers, for legacy support) we'll create subdirectories per SDK, so these files won't be in the same directory. Ever since we refactored them, they were never meant to represent a single service.
Do you have any more context on Cadl / the timeframe there?
Why can't you use the track 2?
We've previously given copious amounts of feedback to the Azure SDK Team as to why we're unable to use the Track2 Go SDK - and since we didn't hear back from the Azure SDK Team about our concerns - ultimately ended up having to build hashicorp/go-azure-sdk
.
The hashicorp/go-azure-sdk
repository both fixes the concerns we had (albeit using the Track1 base layer as a temporary stop-gap, until we're fully off the Azure SDK for Go) and enables us to embed logic within the Go SDK to both make it more consistent (for example, all operations take a Resource ID object where a Resource is being mutated) - which ultimately reduces the amount of code needed to interact with the SDK.
By comparison, adopting Track2 would mean:
- increasing the amount of code needed (both per-operation and in general)
- more admin overhead with nested Go modules (e.g. which semver relates to which API version? a large number of breaking changes every time we update a module)
- re-introducing the pain of composite Swaggers (which comes back to more admin overhead/which API version is actually being used)
- hitting up against more Swagger inconsistencies (since
hashicorp/go-azure-sdk
corrects a bunch of these)
As such whilst Track2 may work great for folks using a small number of packages, unfortunately the design/architectural decisions mean it doesn't work for us since we're vendoring large amounts of the SDK (and are concerned about which API versions we're using) - as such this isn't something we're planning to adopt (even if the amount of code required to use Track2 was reduced in the same manner as hashicorp/go-azure-sdk
).
Whilst that's unfortunate, in practice not using the Track2 SDK has enabled us to look into additional functionality (for example, Terraform Resource Generation) that wouldn't have been possible if we used the Track1 or Track2 SDKs (since we're normalizing the Swaggers, for example duck-typing into common types) - so whilst there is an overhead to generating this SDK ourselves, I'd argue it's working out really well for us - and as such unfortunately we have no plans to adopt Track2.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@heaths I get that you'd like us to use Track2, but I still think you've closed this for the wrong reasons here - @JeffreyRichter any chance you'd be able to take a look here? I think @heaths and I are at an impasse here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll meet with Heath and discuss so I understand the issue and report back here (hopefully next week but it is Thanksgiving).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@JeffreyRichter did you have a chance to chat with Heath about this yet?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, Heath & I spoke and as it is SDK breaking, we cannot accept this PR.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We appreciate contributions to the Azure SDKs, but since this is an SDK-breaking change as noted above, we cannot accept this. If you're using autorest to generate your own SDK from all swaggers - which we split to better support the service and SDK feature teams with separate definitions - please use the amended transforms above. |
@heaths @JeffreyRichter As both an Azure enthousiast and Terraform Provider contributor this annoys me a lot. Can we please find a way to work together in a constructive way and move this forward and out of the way? Could one at least make sure that https://github.com/Azure/azure-rest-api-specs/tree/main/specification/keyvault/data-plane/Microsoft.KeyVault/preview/7.4-preview.1 contains the proposed fix before someone freezes it? |
OK. Heath and I will discuss this again and see what we can do. Unfortunately, he is now out until after New Year's, so this will have to sit until we can connect. Sorry for the delay. |
@aristosvo above is changing property name, which will not match the service implementation. This field is there since the beginning and change will break all customers. Proposed change is impossible. You can schedule a meeting with team to figure out other options (possibly fix track 2 to work as our recommended option). Key Vault PG team |
I found someone else to speak to about this and here's the deal... We have already shipped these packages and the packages name the enum type from the swagger name. If you are using our autorest tool to produce code from the swagger, you can use a swagger directive to rename the enum types for your code-gen. See https://github.com/Azure/autorest/blob/main/docs/generate/built-in-directives.md |
@JeffreyRichter Thanks, but that leaves the terraform users now in the dark. The question is what we can do then to support probably the largest external user base of the Azure REST API in a proper way. I opened up #21877 as that API version is still in preview, would that work? |
@jlichwa I don't think that is the case. This are some annotations which influence the output of the SDK generation process, not the calls towards the API implementation AFAIK. I understand that an breaking change in an SDK is annoying as well, from a Terraform Provider perspective we've dealt with these for years in Track1. Dropping proper Track1 support without an easy transition to Track2 is a similar annoying move. To be clear, I don't want to complain and put you on the spot or anything like that, just want to make sure we're making some moves forward for the users of the Terraform Provider for Azure, which have waited long enough already. I opened up #21877 to influence the generation of the API SDK for 7.4-preview1, as that API version is still in preview, would that work from a breaking change perspective? |
@aristosvo it is not annotation. It is an enum which is passed to service and it will break all clients. Track 1 is deprecated and it is not supported for any new features. You will need to migrate/create new Track 2 SDK. |
@aristosvo I discussed with @JeffreyRichter about various options. The path forward would be to have a meeting with me and @heaths when he comes back next year to discuss it. |
@jlichwa @JeffreyRichter @heaths since this inconsistency exists in the Swagger (which is supposed to be the source of truth) - is there a reason why the Track2 SDKs couldn't temporarily use a Swagger Directives until the next major version instead? That would both solve this issue in the medium-term whilst fixing this for other consumers of the Swagger |
Yes Tom, what you propose is possible. And we did discuss this we'd have to coordinate it across all the SDK language owners which is tedious but possible. Jack & I also discussed some other alternatives too, but I prefer to let him tell you about them when you & he meet. |
hey @JeffreyRichter - just wondering if you'd had a chance to sync up with Jack/Heath yet on how's best to proceed here? |
Jack & I spoke last month. The ball is in @jlichwa's court to talk to you. |
The best way you to contact our team is to create support request as I mentioned above in comments. Looking forward to the meeting. |
Fixes this: